2010年5月12日水曜日

 

【Python】XREAにVirtual-PythonでPDFminerをインストールしてUnicodeの変換に失敗した

virtual-python.pyのインストール

$ wget http://peak.telecommunity.com/dist/virtual-python.py
$ python virtual-python.py
$ wget http://peak.telecommunity.com/dist/ez_setup.py  /virtual/[ユーザ名]/bin/python ez_setup.py

エンコーディングの設定

「lib/python2.4/site-packages」に「sitecustomize.py」を作成してPythonのデフォルトエンコーディングをUTF-8にする。


$ cd ~/lib/python2.4/site-packages
$ vi sitecustomize.py
/* lib/python2.4/site-packages/sitecustomize.py */
  import sys
  sys.setdefaultencoding('utf-8')
:wq! // 保存して終了

権限の変更。

  $ chmod 755 sitecustomize.py

環境変数の設定

  $ vi .bashrc
/* .bashrc */
  export PYTHONPATH=~/usr/lib/python2.4/site-packages
  export PATH="~/usr/bin:${PATH}"
:wq!

PDFminerのインストール

PDFMiner

ダウンロードして(pdfminer-20100424.tar.gz)解凍。(任意でディレクトリ名を「pdfminer」に変更。)
ディレクトリ内にある全ての「*.py」ファイルの一行目、Pythonパスをローカルに変更。

#!/usr/bin/python
#!/usr/bin/env python
↓変更
#!/virtual/[ユーザ名]/bin/python

アップロード。
インストール。

$ cd public_html/pdfminer/
$ make cmap
$ python setup.py install

virtual-pythonでする必要があると思うので、参照が上手くされてなかったらパス指定。

$ /virtual/[ユーザ名]/bin/python setup.py install

これで日本語が使われてない「sample/」ディレクトリ内のPDFからテキスト抽出は成功。

日本語のPDFを処理しようとするとエラーになる。

/* エラー */
Traceback (most recent call last):
  File "/virtual/[ユーザ名]/bin/pdf2txt.py", line 94, in ?
    if __name__ == '__main__': sys.exit(main(sys.argv))
  File "/virtual/[ユーザ名]/bin/pdf2txt.py", line 88, in main
    process_pdf(rsrcmgr, device, fp, pagenos, maxpages=maxpages, password=password)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 822, in process_pdf
    interpreter.process_page(page)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 756, in process_page
    self.render_contents(page.resources, page.contents, ctm=ctm)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 767, in render_contents
    self.init_resources(resources)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 338, in init_resources
    self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 192, in get_font
    font = self.get_font(None, subspec)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdfinterp.py", line 183, in get_font
    font = PDFCIDFont(self, spec)
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/pdffont.py", line 521, in __init__
    self.unicode_map = CMapDB.get_unicode_map(self.cidcoding, self.cmap.is_vertical())
  File "/virtual/[ユーザ名]/lib/python2.4/site-packages/pdfminer/cmapdb.py", line 237, in get_unicode_map
    module = __import__(modname, fromlist=['pdfminer.cmap'])
TypeError: __import__() takes no keyword arguments

cmapが上手く使えてないのか、参考できるところもないので別のライブラリを試すことにする。

Pythonファイルのパスを変更しないでもインストールは出来た気がする。
その場合「/public_html/pdfminer/build/scripts-2.4/pdf2txt.py」のパスは変更が必要だったのと「make cmap」が失敗した気がする。

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google