ぶっこ抜き大好きエンジニアの、下駄です。
pdfデータは便利ですが、システムで利用できるデータ形式ではないので、内容が画像形式でなければ、テキストでぶっこ抜いてみたいと思ったら、ナイスなコマンドが存在しました。
そして、これがメッチャ使えるコマンドだと分かったので、僕のシステムフレームワーク標準に入れるべく、docker-composeに登録しておきました。
インストール
ubuntu(debian)の場合
apt-get install -y poppler-util
centosの場合
yum install -y poppler poppler-util
僕の環境ではこちらで無事にインストールできたんですが、出来ない場合もあるかもしれません。
すみませんが、ググってください・・・
テキスト変換事例
通常変換
pdftotext sample.pdf sample.txt
区切り毎に改行で変換されます。
レイアウトを維持して変換
pdftotext -layout sample.pdf sample_layout.txt
なるべくレイアウトを維持してテキスト変換されます。
ただし、table構成などの場合は、スペース文字列で埋められるので絡む情報の取得が難しいでしょう。
block-box変換
pdftotext -bbox sample.pdf sample_layout.txt
スペースを含む区切り毎にhtml(xml)形式のwordタグで表示されます。
ただし、改行の区切りとスペースの区切りが混ざってしまうので、少し使いづらい印象です。
block-box-layout変換
pdftotext -bbox-layout sample.pdf sample_layout.txt
table組みされている場合、この変換が一番精度が高いようです。
開始ページの指定
pdftotext -f 3 sample.pdf sample_first.txt
終了ページの指定
pdftotext -l 3 sample.pdf sample_last.txt
パスワード付きpdfの場合
# ユーザーパスワード
pdftotext -upw '%password%' sample.pdf sample.txt
# オーナーパスワード
pdftotext -opw '%password%' sample.pdf sample.txt
注意点
当たり前の話ですが、pdfがスキャンデータなどの場合は、テキストデータが含まれておらず、このコマンドを実行してもテキストは抽出されません。
pdfは形式がかなり自由なので、その書類によってルールがまちまちなため、単純に文字列を取得するというケースや、形式がルール化されている場合じゃないと、使えないかもしれませんが、
政府発行書類などで、表組みされているデータを取得する場合などに便利に使えます。
ちなみに、僕のケースは、webデータクローリングで、取得したデータ変換で使う予定です。
phpのモジュールで変換してもいいんですが、linuxコマンドでできると、cron処理もやりやすいですからね。
もう少しこの機能を使い込んでみたいと思います。
0 件のコメント:
コメントを投稿