Poppler:pdftotext の使い方

TOP > Poppler ツール > *


Pixfav-Images You Love to View

機能

PDF ファイル内の文字列をテキストファイルへ出力します。ページ内の座標での範囲指定での抽出もできます。出力は文字コード、改行コード、改ページコード、レイアウト制御など出来ます。

注記:PDF内の画像上の文字列をスキャンしてテキストに変換する訳では無いです。

これ以降は Poppler  pdftotext.exe  version 0.45.0  Windows 版での内容です。

 

Help の内容

 

形式

pdftotext   [options]   [PDF-file   [text-file]  ]

  • options : オプション。複数の組み合わせ可能。
  • PDF-file : 入力のPDFファイル名
  • text-file : 出力するテキストファイル名
    ハイフン「-」を指定すると標準出力(画面)に出力します。
    保存先フォルダもココで指定できます。相対、フルパスもOK。詳細は後で。

各区切りは1つ以上の半角の空白です。

 

Options

各オプションはオプション文字列の前にハイフン「-」、そしてオプション名です。更に値が続く場合は1つ以上の半角の空白を入れてから、値を入れます。複数のオプションを連続で入れる時も1つ以上の半角の空白を入れて連続させます。

例: 

-f  1  -l  10

 

-f <int>

PDFからテキストを抽出するページ範囲の最初のページ番号を指定します。無指定は1ページからの扱いになります。基本的に「 -l 」オプションと対で使用します。

例:

5頁から12頁までのテキストを出力します。

>pdftotext -f 5 -l 12 abcd.pdf  out.txt

 

-l <int>

PDFからテキストを抽出するページ範囲の最後のページ番号を指定します。無指定は最終ページまでの扱いになります。基本的に「 -f 」オプションと対で使用します。

例:

3頁から25頁までのテキストを出力します。

>pdftotext -f 3 -l 25 abcd.pdf   save¥out.txt

 

-r <fp>

DPIの解像度を指定します。デフォルトは72 DPIです。値は72~4000 の間です。

ここで言う解像度とは。PDF内での単位を現すための計算に持ちいられる精度を示します。解像度を示すオプションで「 -r 72 」を示すと、1/72インチ単位でPDFの座標の位置やサイズの位置が決まります。仮に解像度を「 -r 4000 」にすると1/4000インチ単位で座標の位置とサイズが更に正確に決まります。座標やサイズの値が変わるわけでは無いです。PDF内での位置を決める精度が変わるのです。(注記:独自の解釈)

使う必要は無いと特に思われます。また意味不明の時は無指定をオススメします。

 

-x <int>

トリミング領域の左上隅の x 座標を指定します。トリミングに関しては後でまとめて詳細に説明します。

 

-y <int>

トリミング領域の左上隅の y 座標を指定します。トリミングに関しては後でまとめて詳細に説明します。

 

-W <int>

トリミング領域の幅をピクセル単位で指定します。デフォルトは 0 です。トリミングに関しては後でまとめて詳細に説明します。

 

-H <int>

トリミング領域の高さをピクセル単位で指定します。デフォルトは 0 です。トリミングに関しては後でまとめて詳細に説明します。

 

-layout

(可能な限り)テキストの元の物理的なレイアウトを維持します。物理的なレイアウト(列、ハイフネーションなど)と出力順序を意識したテキストを出力します。

と書いてもイメージが湧かないので例を示します。

例:

以下のページの部分をトリミング指定でテキスト抽出します。

最初は「-layout」オプション有り、次は無しです。

テキストをPDF上の配置を意識したままに表示するには「-layout」オプションを付けます。見た目には判りやすいですが、プログラミング的に処理するには不向きな場合が有ると思われます。    

 

-fixed <fp>

Assume fixed-pitch (or tabular) text, with the specified character width (in points).  This forces physical layout mode.

(ポイントで)指定された文字幅の固定ピッチ(または表)のテキストを前提としています。これは物理的なレイアウトモードを強制します。

例:

 

1番目は「-fixed 15 」、2番目は「-fixed 10 」、3番目は「-fixed 5 」です。

例:

1番目は「-fixed 15 」、2番目は「-fixed 10 」、3番目は「-fixed 5 」です。

 

-raw

テキストをコンテンツストリームの順序で保管してください。これは、多くの場合、列の書式設定などを「元に戻す」切り刻みですrawモードの使用は推奨されていません。

例:

「-raw 」を指定しないと下記の表の文字は全て1文字ずつ縦にならんでしまいます。

「-raw 」を指定した場合です。

 

-htmlmeta

メタ情報を含む、簡単なHTMLファイルを生成します。これは、単に<pre>と</ pre>でテキストをラップし、メタヘッダを付加します。

例:

>pdftotext  -htmlmeta  a-de-001.pdf  a-de-001.html

改行コードはUnix(LF)で出力されます。

 

-bbox

ファイル内の各単語の境界ボックス情報を含む XHTML ファイルを生成します。

 

-bbox-layout

-bbox に似ていますが、特別なレイアウト境界ボックスデータを持ちます。 -htmlmetaを設定します。

※Xpdf に無いPoppler 独自の追加機能です。

 

-enc <string>

テキスト出力に使用するエンコーディングを設定します。「UTF-8」がデフォルトです。指定できるのは以下の「-listenc」オプションで表示される物だけです。

 

-listenc

利用可能なエンコーディングの一覧を表示します。

 

-eol <string>

テキスト出力に使用する行末規則(改行コード)を設定します。unix 、 dos 、 mac のどれかを指定します。

システム 改行コード 記号
unix LF ¥n
dos CR+LF ¥r+¥n
mac CR ¥r

>pdftotext  -eol dos -de-005.pdf  a-de-001.txt





 

-nopgbrk

ページ間の改ページ(フォームフィード文字:1バイトコード16進表示=0C)を挿入しません。

 

-opw password

PDFファイルの所有者のパスワードを指定します。これを提供することは、すべてのセキュリティ制限をバイパスします。つまりセキュリティ設定無しの状態に出来ます。 

注記: ↑ と説明には書かれていますが、セキュリティ設定で全てを「許可しない」の状態にしても、指定無しでテキストの保存は出来ました。

 

-upw password

PDFファイルのユーザパスワードを指定します。これは文書を開くパスワードです。

 

-q

すべてのメッセージやエラーを出力しません。慣れるまで使用は控えましょう。

 

-v

著作権とバージョン情報を表示します。

 

-h , -help , --help , -?

著作権とバージョン情報、形式、引数などの簡単な説明を一覧表示します。

 

終了コード

pdftotext ツールは次の終了コードを返します。

  • 0 : エラー無し
  • 1 : 入力PDFファイルを開く時にエラーが発生した
  • 2 : 出力ファイルを開く時にエラーが発生した
  • 3 : 入力PDFファイルのアクセス権に関連するエラーが発生した
  • 99 : その他のエラー

 

VBA関数からの起動

以下のVBA関数を利用してPoppler の pdftotext.exe をコマンドライン起動できます。 

 

text-file の補足

出力テキストのファイル名の拡張子は「.txt」で無くても構いません。「.html」等でも何でもOKです。

ファイル名だけではなく、保存先フォルダも指定できます。以下に例を使って説明します。

例:

カレント・フォルダの下位フォルダ「save」に保存したい。

>pdftotext  IN.pdf  save¥out.txt

頭に ¥ を付けて 「¥save¥out.txt」とすると

>pdftotext  IN.pdf  ¥save¥out.txt
I/O Error: Couldn't open text file '¥save¥out.txt'

怒られて、エラーになります。  

例:

保存先をフルパスで指定したい時は、以下の様にします。

>pdftotext  IN.pdf  D:¥work¥out.txt

例:

フォルダ名に半角の空白が有る時は、ダブルクオーテーションで囲みます。

>pdftotext  IN.pdf  "D:¥work¥sa ve¥out.txt"

例:

ファイル名に半角の空白が有る時は、ダブルクオーテーションで囲みます。

>pdftotext  IN.pdf  "D:¥work¥o u t.txt"

 

 

トリミング

ココではページ内で四角い範囲を指定して、その枠内から文字列を抽出する事を言います。4つのオプションで範囲を指定します。その値を決める手順を説明します。

以下は Acrobat XI での例です。

① 該当するPDFを開いたら、以下のページの「全体表示」をクリックします。

pdftotext でのトリミング方法

② メニューから 「表示(V)」 -> 「表示切り替え(S)」 -> 「カーソル座標(U)」 を選択します。

pdftotext でのトリミング方法

③ 以下の様にAcrobat 画面表示に X と Y の座標が黒いボックス内に表示されます。黒いボックスはマウスで移動も出来ます。

pdftotext でのトリミング方法

④ 次にAcrobat の「ツール」 -> 「ページ」 -> 「トリミング」をマウスで選択します。

pdftotext でのトリミング方法

⑤ PDFページのテキストを抽出したい部分をマウスでトリミング操作します。黒のカーソル座標に幅のWと高さにHが追加されて表示されます。

pdftotext でのトリミング方法

⑥ マウスを動かすとXとY軸の値が連動して変化して正確な値が判りません。そこでトリミングの領域にマウスを持って行って、マウスをクリックしたままにします。そうするとトリミングに必要なXとY軸の値が正確に表示されます。

pdftotext でのトリミング方法

⑦ この時の値が pdftotext のトリミング値になります。

pdftotext でのトリミング方法

⑨ 上記の値をオプションに反映して、pdftotext を実行します。

▽ pdftotext でトリミングをDos 実行した時。

pdftotext でのトリミング方法

▽ PDFページ上のトリミング範囲のテキスト

pdftotext でのトリミング方法

ピッタリとテキストのトリミング抽出が出来ました。   

 

エラーメッセージの表示例

フォルダの指定方法が間違っている時。

I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext  -layout  a-de-001.pdf ¥save¥a-de-001.txt
I/O Error: Couldn't open text file '¥save¥a-de-001.txt'

ユーザーパスワードが間違っている時。

I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext  -upw def  a-de-005.pdf  a-de-001.txt
Command Line Error: Incorrect password

 

備考

  • PDFの座標系はページの左下隅を基点としていますが、注釈の座標はページの左上隅を基点とします。
    当 pdftotext で言うトリミングは左上隅を起点にします。

 

動作確認の環境

  • Windows 10 64bit Pro
  • Microsoft Office 2007 Excel 32bit

 

< Poppler へ戻る >

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン