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」が失敗した気がする。

ラベル:


2010年5月7日金曜日

 

XREAのシェルをrbashからbashに変更する

XREAレンタルサーバで、SSH接続するとシェルは制限付きのrbashになります。
ls」も「cd」も使えません。

/* rbashの動作 */
$ ls
-rbash: /bin/ls: restricted: cannot specify `/' in command names
$ cd
-rbash: cd: restricted

これでは困りますので、シェルを「chsh」でbashに変更します。

/* シェルをbashに変更する */
$ chsh
Changing login shell for pdf2.
Password:
// パスワードを入力(画面には何も反映されないので注意)
Enter the new value, or press return for the default.
        Login Shell [/bin/rbash]: /bin/bash
// bashに変更
Shell changed.
// 完了

XREAを使ってきて初めて遭遇したトラブルです。

ラベル:


2010年5月6日木曜日

 

【PHP】PDFからテキストを抜き出すメモ【Python】

何でもPDFで送ってくる人は止めて欲しいです。
Office系のファイルで送るのも控えて欲しいものです。テキストがコピーできるだけ後者の方がほんの少しだけマシでしょうか。

Xpdfに含まれるpdftotextというものを使う方法。

pdftotext:pdfファイルから文字抽出 - 個人的Linux

PDFMinerというPythonライブラリもあります。純Pythonで書かれた PDFパーザとインタプリタ。PDFの解析とテキスト抽出に。 ほぼ PDF-1.7準拠。日本語縦書きと暗号化に対応。

「PDFMiner」を使ってテキストを抽出 - BoxHeadRoom

PythonにはpyPdfというライブラリもあります。

Pure Python PDF to text converter - ActiveState Code
追記:2010/05/09

PHPではライブラリ見つけられませんでした。

php で pdf 内のテキストを抽出するモジュールを作った - 夜の Discovery

以下リンクはpdftotextを「exec」や「system」で実行しています。

PHPで PDFファイルをテキストファイルに変換 - AquaSunネットサービス ブログ

ラベル: , ,


 

【ImageMagick】PDFを画像ファイルに変換するメモ

PDFファイルをJPGやPNGなど画像ファイルにするには「convert」コマンドで出来る。
Adobeが配布しているGhostscriptが必要。印刷などで使用するものらしい。

ghostscriptのインストール - わすれないうちにメモしよう
ghostscript 8.70 のビルドとインストール - とりあえず暇だったし何となく始めたブログ

Ghostscripを利用する「gs」コマンドを参照できない場合がある。

PDF→JPGへの変換エラー - 週刊しんチャンネル

ImagickからもGhostscripがあれば利用できる。

PECL::Imagick メソッドメモ(サンプル付き) - codeなにがし

ラベル:


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

登録 投稿 [Atom]

Google