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 syssys.setdefaultencoding('utf-8'):wq!// 保存して終了
権限の変更。
$ chmod 755 sitecustomize.py
環境変数の設定
$ vi .bashrc
/* .bashrc */export PYTHONPATH=~/usr/lib/python2.4/site-packagesexport PATH="~/usr/bin:${PATH}":wq!
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」が失敗した気がする。
ラベル: Python
登録 投稿 [Atom]
