$Id: index.html,v 1.4 2009-01-15 07:33:43 cz Exp $
PDFlib TET は PDF ファイル中のテキストを抽出することを主目的とした製品ですが、PDFlib pCOS の機能も内蔵しているため、PDF ファイルのメタデータやハイパーテキストなどの情報を取得することも可能です。
また、テキストのページ上の位置や、グリフの幅なども取得できます。
TET で CJK(日本語、中国語、韓国語)のテキストを抽出する場合には、CMap の設定が必要です。ただし、PDFlib で PDF を出力する場合とは違い、TET で単にテキストを抽出する場合には CMap に関する知識は一切不要で、CMap のディレクトリを指定してあげるだけのことです。CMap について知りたい場合、CMap やフォントについて の部分をご参照ください。
CMap は、TET のアーカイブファイルに同梱されています。http://pdflib.jp/ にある CMap パッケージも同じ内容なので、どちらを使っても問題ありませんが、ここでは http://pdflib.jp/ にあるものを使うことにします。
TET 同梱のものは、TET-2.2-Linux/resource/cmap にあります。このディレクトリを適当な場所にコピーしてください(以下のサンプルでは /usr/local/pdflib7/resource/cmap があるものとしています。
なお TET 2.1 ベースのものですが、日本語マニュアルが TET ダウンロードページ から入手できます。TET 2.2 で増えた新機能はそう多くない(pCOSまわりや機能強化など、見えない部分の改良が多い)ため、十二分に役に立つかと思います。
ライセンスキーを指定していない状態の TET は、最大10 ページ/1MBまでのPDFファイルまでしか取り扱えないようになっていることを除き、全ての機能が使用可能です。そのためライセンスの購入前であっても、必要な機能が TET にあるかどうか充分に検証可能かと思います。
コマンドライン版の TET(主にバッチ処理などを想定)は、非常に簡単に使うことができます。下記は、CMap ディレクトリとして「/usr/local/pdflib7/resource/cmap」を指定して、北見市の 公文書公開請求書の PDF(560-0201.pdf) や テキストフローの実行サンプル(textflow_sample.pdf) 内のテキストを抽出する時の実行例です。
% TET-2.2-Linux/bin/tet --searchpath /usr/local/pdflib7/resource/cmap 560-0201.pdf % TET-2.2-Linux/bin/tet --searchpath /usr/local/pdflib7/resource/cmap textflow_sample.pdf
抽出された結果はそれぞれ、560-0201.txt と textflow_sample.txt です。
PHP から TET を呼び出すには、下記手順のように PHP の extension ディレクトリにライブラリをコピーして php.ini を編集する必要があります。最後に Apache を再起動して、phpinfo(); で TET のセクションがあることを確認したらインストール完了です。
% cp libtet_php.so /usr/lib/php4/20020429/ % sudo vi /etc/php4/apache2/php.ini を実行して下記行を追加 extension=libtet_php.so
プログラムから TET を利用して PDF のテキスト抽出を行う例は、extractor_j.phps です。これは TET のアーカイブファイル同梱の extractor.php をベースに、個人的に気にいらない個所を少し修正したものです。実行結果は extractor_j.result.txt です。
非常に簡単に、テキストやフォント名などが取得できることがわかると思います。
なお、このサンプルでは TET_open_page()のオプションで "granularity=line" を指定しているために行単位での抽出となっていますが、これを page(1ページのテキスト全て)やword(CJK環境では1文字ずつ)に設定することで、一度に抽出する量を変更できます。
ハイフンの除去や、極端に大きい/小さい文字の無視など、TET には抽出するテ キストのフィルタリングの機能があります。詳細に関しては日本語マニュアルの オプションをご参照ください。
| 2007/08/14 | 公開 |