この記事は セゾン情報システムズ Advent Calendar 2020 18日目の記事です。
先にコマンドの解説をします。
- 色々調べてここにたどり着いた方のために、pdf2txt.py のパラメーターについて先に記載します。
- こちらに詳しく出ていました。 https://www.unixuser.org/~euske/python/pdfminer/
python.exe pdf2txt.py [options] -o [OutFilename] [InFilename]
例:
c:\python38\python.exe c:\python38\Scripts\pdf2txt.py -M 3.0 -o c:\work\OutFile.txt c:\work\InFile.pdf
###解説
####主に読み込み調整が必要なパラメータ。
(どこかで、標準のままだと変換結果がイマイチなことが多いという記載を見ました。)
- 調整は[options] に設定します。文字間隔(M) 単語の間隔(W) 行間隔(L) 縦読み(V)
- パラメータ無指定の場合はデフォルト値が採用されます。 M = 1.0, W = 0.2, L = 0.3 。横読みです。
- 縦読みをしたい場合は、 -V を指定します。
リンクしたURLのGoogle和訳を貼っておきます。
これらは、レイアウト分析に使用されるパラメーターです。実際のPDFファイルでは、オーサリングソフトウェアによっては、テキスト部分が実行中にいくつかのチャンクに分割される場合があります。したがって、テキスト抽出ではテキストチャンクをスプライスする必要があります。次の図では、距離がchar_margin(Mとして表示)よりも近い2つのテキストチャンクが連続していると見なされ、1つにグループ化されます。また、line_margin(L)よりも距離が近い2本の線は、テキストボックスとしてグループ化されます。これは、テキスト部分の「クラスター」を含む長方形の領域です。さらに、2つの単語間の距離がword_margin(W)より大きい場合、単語間の空白はスペースとして表されない可能性があるため、必要に応じて空白文字(スペース)を挿入する必要がありますが、それぞれの位置によって示されます。語。
各値は、実際の長さとしてではなく、問題の各文字のサイズに対する長さの比率として指定されます。デフォルト値は、それぞれM = 1.0、L = 0.3、およびW = 0.2です。
その他、画像の書き出しなどのパラメーターがありますが、本稿では割愛いたします。詳細は以下を参照いただけると幸いです。
https://www.unixuser.org/~euske/python/pdfminer/
では改めて概要です。
- Pythonライブラリの1つpdfminerですが、pdf2txt というそれを呼べば動作するモジュールがあります。
- pdf2txtを使い、pdf→textに変換できますが、期待通りの動作をしてくれない場合があります。
- そんなときにもpdfminerは調整用のパラメーターを持っているので調整次第で読み込みができるようになります。
- pdfminerでの記載は他にもありましたが、便利な pdf2txt.pyで実施する場合について、調べたところ日本語記載の資料がなかったので記載します。
- コマンド実行できるので、DataSpiderなどのETLツールやジョブコントローラーからも実施できて便利です。
※Pythonの知識は不要ですがPythonの実行環境は必要です。
※画像化されているpdfからテキストは抽出できません。テキストが抜けるかどうかの判断は、Pdfファイル内を文字検索し、検索できるようでしたらテキストが抜けます。
Pythonの実行モジュールとして使いたい場合の手順について
Pythonの開発環境は不要です。実行環境は必要です。(リンクで済ませようと思ったのですが意外とない T_T)
-
Python 実行環境のインストール(windows)
https://www.python.org/downloads/
から
windowsを選択。
最終を選択
インストーラー付きのパッケージを選択してダウンロードしてインストール。
インストール先は人それぞれですが、個人的にはドライブ直下のpythonxxx(バージョン。3.9.1 なら391)が好きです。 -
pdfminner.six を pip でインストール
コマンドプロンプトで
pip install pdfminer.six
pythonフォルダのScripts配下に、pdf2txt.py ファイルが有れば動くはず。です。
ところで、記事を書いていて気づいたのですが、とっても便利なpdfminerですが作者は日本の方のようです。Yusuke Shinyama さん。ありがとうございます。
以上
記事に不具合。不都合などございましたらご連絡いただけると幸いです。記事内容は会社公式のものではなく、個人として記載するものです。