Poppler:pdftotext の使い方

TOP > Poppler ツール > *


Pixfav-Images You Love to View

機能

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

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

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

Help の内容

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -h 002 pdftotext version 0.45.0 003 Copyright 2005-2016 The Poppler Developers - http://poppler.freedesktop.org 004 Copyright 1996-2011 Glyph & Cog, LLC 005 Usage: pdftotext [options] <PDF-file> [<text-file>] 006 -f <int> : first page to convert 007 -l <int> : last page to convert 008 -r <fp> : resolution, in DPI (default is 72) 009 -x <int> : x-coordinate of the crop area top left corner 010 -y <int> : y-coordinate of the crop area top left corner 011 -W <int> : width of crop area in pixels (default is 0) 012 -H <int> : height of crop area in pixels (default is 0) 013 -layout : maintain original physical layout 014 -fixed <fp> : assume fixed-pitch (or tabular) text 015 -raw : keep strings in content stream order 016 -htmlmeta : generate a simple HTML file, including the meta information 017 -enc <string> : output text encoding name 018 -listenc : list available encodings 019 -eol <string> : output end-of-line convention (unix, dos, or mac) 020 -nopgbrk : don't insert page breaks between pages 021 -bbox : output bounding box for each word and page size to html. Sets -htmlmeta 022 -bbox-layout : like -bbox but with extra layout bounding box data. Sets -htmlmeta 023 -opw <string> : owner password (for encrypted files) 024 -upw <string> : user password (for encrypted files) 025 -q : don't print any messages or errors 026 -v : print copyright and version info 027 -h : print usage information 028 -help : print usage information 029 --help : print usage information 030 -? : print usage information


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

形式

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」オプション有り、次は無しです。

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -x 584 -y 117 -W 247 -H 274 -layout a-de-001.pdf - 002 EUR 003 --- 004 005 006 X,XXX.XX 007 XXX,XXX,XXX.XX 008 X,XXX,XXX.XX- 009 XX,XXX,XXX.XX- 010 XXX,XXX.XX- 011 XX,XXX,XXX.XX 012 ----------------- 013 XXX,XXX,XXX.XX 014 ----------------- 015 XXX,XXX,XXX.XX 016 ================= 017 018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -x 584 -y 117 -W 247 -H 274 a-de-001.pdf - 019 EUR 020 --X,XXX.XX 021 XXX,XXX,XXX.XX 022 X,XXX,XXX.XXXX,XXX,XXX.XXXXX,XXX.XXXX,XXX,XXX.XX 023 ----------------XXX,XXX,XXX.XX 024 ----------------XXX,XXX,XXX.XX 025 =================


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

テキストを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 」です。

Source file 001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 15 a-de-001.pdf - 002 0 123 456 789 ABC DEF 003 2 ! "# $%& '() *+, -./ 004 30 123 456 789 :;< =>? 005 4@A BC DEF GHI JKL MNO 006 5P QRS TUV WXY Z[\ ]^_ 007 6` abc def ghi jkl mno 008 7p qrs tuv wxy z{| **** 009 8 010 9 011 A 012 B 013 C 014 D 015 E 016 F 017 018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 10 a-de-001.pdf - 019 0 1 2 3 4 5 6 7 8 9 A B C D E F 020 2 ! " # $ % & ' ( ) * + , - . / 021 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 022 4 @A B C D E F G H I J K L M N O 023 5 P Q R S T U V W X Y Z [ \ ] ^ _ 024 6 ` a b c d e f g h i j k l m n o 025 7 p q r s t u v w x y z { | } ~ **** 026 8 027 9 028 A 029 B 030 C 031 D 032 E 033 F 034 035 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 5 a-de-001.pdf - 036 0 1 2 3 4 5 6 7 8 9 A B C D E F 037 2 ! " # $ % & ' ( ) * + , - . / 038 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 039 4 @ A B C D E F G H I J K L M N O 040 5 P Q R S T U V W X Y Z [ \ ] ^ _ 041 6 ` a b c d e f g h i j k l m n o 042 7 p q r s t u v w x y z { | } ~ **** 043 8 044 9 045 A 046 B 047 C 048 D 049 E 050 F

注意:上記は出力テキストの記号文字によって、HTMLに影響が出て、表示が一部、変になっています。


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

例:

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

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 15 a-de-001.pdf - 002 EUR 003 --- 004 005 006 X,XXX.XX 007 XXX,XXX,XXX.XX 008 X,XXX,XXX.XX- 009 XX,XXX,XXX.XX- 010 XXX,XXX.XX- 011 XX,XXX,XXX.XX 012 ----------------- 013 XXX,XXX,XXX.XX 014 ----------------- 015 XXX,XXX,XXX.XX 016 ================= 017 018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 10 a-de-001.pdf - 019 EUR 020 --- 021 022 023 X,XXX.XX 024 XXX,XXX,XXX.XX 025 X,XXX,XXX.XX- 026 XX,XXX,XXX.XX- 027 XXX,XXX.XX- 028 XX,XXX,XXX.XX 029 ----------------- 030 XXX,XXX,XXX.XX 031 ----------------- 032 XXX,XXX,XXX.XX 033 ================= 034 035 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 5 a-de-001.pdf - 036 EUR 037 --- 038 039 040 X,XXX.XX 041 XXX,XXX,XXX.XX 042 X,XXX,XXX.XX- 043 XX,XXX,XXX.XX- 044 XXX,XXX.XX- 045 XX,XXX,XXX.XX 046 ----------------- 047 XXX,XXX,XXX.XX 048 ----------------- 049 XXX,XXX,XXX.XX 050 =================


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

-raw

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

例:

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

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

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -raw a-de-001.pdf - 002 0 1 2 3 4 5 6 7 8 9 A B C D E F 003 2 004 3 005 4 006 5 007 6 008 7 009 8 010 9 011 A 012 B 013 C 014 D 015 E 016 F 017 ! " # $ % & ' ( ) * + , - . / 018 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 019 @ A B C D E F G H I J K L M N O 020 P Q R S T U V W X Y Z [ \ ] ^ _ 021 * a b c d e f g h i j k l m n o 022 p q r s t u v w x y z { | } ***「

注意:上記は出力テキストの記号文字によって、HTMLに影響が出て、表示が一部、変になっています。


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

-htmlmeta

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

例:

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

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

Source file 001 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> 002 <head> 003 <title>Title</title> 004 <meta name="Subject" content="Subject"/> 005 <meta name="Keywords" content="Keywords"/> 006 <meta name="Author" content="Author"/> 007 <meta name="Creator" content="Creator"/> 008 <meta name="Producer" content="My Producer"/> 009 <meta name="CreationDate" content=""/> 010 </head> 011 <body> 012 <pre> 013 EUR 014 --X,XXX.XX 015 XXX,XXX,XXX.XX 016 X,XXX,XXX.XXXX,XXX,XXX.XXXXX,XXX.XXXX,XXX,XXX.XX 017 ----------------XXX,XXX,XXX.XX 018 ----------------XXX,XXX,XXX.XX 019 ================= 020 021 </pre> 022 </body> 023 </html>

-bbox

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

-bbox-layout

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

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

-enc <string>

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

-listenc

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

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -listenc 002 Available encodings are: 003 UCS-2 004 ASCII7 005 Latin1 006 UTF-8 007 ZapfDingbats 008 Symbol

-eol <string>

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

システム改行コード記号
unixLF¥n
dosCR+LF¥r+¥n
macCR¥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 を実行します。

001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -f 9 -l 9 -x 48 -y 75 -W 513 -H 269 a-de-001.pdf - 002 TWM Limited 003 BALANCE SHEET ON 31 May 2003 - CONSOLIDATED 004 CAPITAL EMPLOYED 005 ---------------SHARE CAPITAL 006 SHARE PREMIUM 007 RETAINED INCOME/(-)ACCUMULATED LOSS 008 UNREALISED GAIN/(-)LOSS ON CURRENCY REVALUATION 009 UNREALISED GAIN/(-)LOSS ON FORWARD CONTRACTS 010 UNREALISED GAIN/(-)LOSS ON INVESTMENT VALUATION 011 SHAREHOLDERS' EQUITY


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

▽ 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等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください