PDF→text(特に日本語)

PDF Hacks ―文書作成、管理、活用のための達人テクニック

PDF Hacks ―文書作成、管理、活用のための達人テクニック

すでに、あちこちで議論はなされているのだが、少しかじってみる羽目に。
この本でも触れられているのだが、処理するのには、pdftotextというのとpdftkの2通りがある。前者は文字通り、PDFをテキスト情報にするもの。後者は、もともとPDFを合体さすとか抽出さすもので、読んでも中身がわからんものをdecodeして、それをいじってテキストにしようという魂胆である。いずれにせよ、英語の場合は楽なのだが、日本語になると途端に課題は困難となる。両方いじってみたが、前者の方がうまく日本語が出たので(体裁は不満だが)、そっちの方で。

  • インストール

pdftotextは、xpdfっちゅうのの中に入っている。バイナリもあるようだが、MacPortsを無理矢理使うと、試しにどんなんがあるのか見れば、

xpdf @3.02 (graphics, print)
Xpdf is a viewer for PDF files.
...
xpdf-japanese @2004-jul-27 (graphics, print)
Xpdf character mapping for Japanese

てな具合になっている。どうせ下のを入れれば、上も入るだろうということで

sudo port -v install xpdf-japanese

で案の定、上のも入る。

  • 設定

とりあえず普通にやってみたらば、

nakazato@mudskipper:~/bio/data/tokutei$ pdftotext A-01_2007.pdf A-01_2007.tmp.txt
Error: No paper information available - using defaults
Error: Unknown character collection 'Adobe-Japan1'
...

と出る。日本語の設定が必要のようだ。
自分の場合、設定ファイルは、/opt/local/etc/xpdfrcにあった。

cidToUnicode    Adobe-Japan1    /opt/local/share/xpdf/xpdf-japanese/Adobe-Japan1.cidToUnicode
cMapDir Adobe-Japan1    /opt/local/share/xpdf/xpdf-japanese/CMap

を追加しておいてみた。ついでに、

textEncoding            UTF-8

のコメントを外しておいた。

  • 実際にやってみる

先の本に書いてあるやり方は、

$ pdftotext -layout -raw -enc UTF-8 a.pdf - | tr -d ' \t\n'

というもの。標準出力に出して(- の部分)、空白や改行などを取り除いている(改ページは残しているらしい)。
まぁ、これでもいいし、改行を残したままでもいいし。各セクションの意味を使うか使わないかで、使い分ければいいのではないか。