10-8 要素の抽出

概説:

ページ全体からのテキスト抽出

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照
PtlParamExtractText plainParam = new PtlParamExtractText(); //抽出時のパラメータ
String TextFromPdf = content.extractText(plainParam);       //コンテントから文字列を取得

矩形を指定してのテキスト抽出

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照
//パラメータクラスの準備は「ページ全体からのテキスト抽出」を参照
PtlParamExtractText paramExtractText = new PtlParamExtractText(); //抽出時のパラメータ
PtlRect extractRect = new PtlRect(left, bottom, right, top);      //抽出範囲の矩形
paramExtractText.appendRect(extractRect);                         //矩形を設定
paramExtractText.setTextOverlapRatio(overlapRatio);     //矩形の境界にある文字の重なり具合指定
paramExtractText.setIgnoreActualText(ignoreActualText); //ActualTextを無視するか否かの指定

String TextFromPdf = content.extractText(paramExtractText); //コンテントから文字列を取得

特定文字のスペース置換・削除をしたテキスト抽出

特定の特殊文字はスペースに置き換える、もしくは削除することができます。

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照
//テキスト抽出パラメータクラスの準備は「矩形を指定してのテキスト抽出」を参照

int unicodeCharFlag =  0;       //置き換えたい文字指定用変数
//Space(U+0020)を指定に追加
unicodeCharFlag = unicodeCharFlag | PtlParamExtractText.AHEXTRACTTEXT_UNI_SPACE;    
//NO-BREAK SPACE(U+00A0)を指定に追加
unicodeCharFlag = unicodeCharFlag | PtlParamExtractText.AHEXTRACTTEXT_UNI_NO_BREAK_SPACE ;
paramExtractText.setUnicodeToSpace(unicodeCharFlag);    //指定したフラグの特殊文字をSpaceに置換え

//テキスト抽出は「ページ全体からのテキスト抽出」を参照

削除したい場合は以下の関数を用います。

paramExtractText.setUnicodeToRemove(unicodeCharFlag);   //指定したフラグの特殊文字を削除

重なり合う文字の制御をしたテキスト抽出

同じ文字が重なっていたときに二重に読むのを防ぐ指定が可能です。

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照
//テキスト抽出パラメータクラスの準備は「矩形を指定してのテキスト抽出」を参照
paramExtractText.setSameTextOmitRatio(sameTextOmitRatio);   //一定以上重なった同じ文字を除外

//テキスト抽出は「ページ全体からのテキスト抽出」を参照

異なる文字が重なっていた時に二重に読むのを防ぐ指定も可能です。色が異なる場合だけ除外することもできます。

//一定以上重なった異なる文字を除外(onlyDiffColorがtrueだと色が同じ場合は除外しない)
paramExtractText.setDifferentTextOmitRatio(diffTextOmitRatio, onlyDiffColor);

画像の抽出

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照

//画像だけを指定したエレメントコンテナを取得
PtlEditElements elems = content.getEditElements(PtlContent.GET_IMAGE);  
PtlEditElement elem = elems.get(imageIndexNum); //インデックス番号の画像エレメントを取得
PtlEditImage elemImage = (PtlEditImage)elem;    //画像エレメントにリキャスト
PtlParamOutput outputImage = new PtlParamOutput(outputImagePath);       //出力先のパス
//画像の出力フォーマット指定
PtlEditImage.OUTPUT_FORMAT format = PtlEditImage.OUTPUT_FORMAT.FORMAT_AUTO;

elemImage.writeFile(outputImage, format);   //画像の出力処理

出力する画像形式をBMP, JPEG, PNGから選択することもできます。

以下はPNGを指定した例です。

PtlEditImage.OUTPUT_FORMAT format = PtlEditImage.OUTPUT_FORMAT.FORMAT_PNG;

埋め込まれた画像の画質のままに抽出

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ・ページコンテント取得は「ページコンテントを操作する」を参照
//画像エレメントの取得・出力画像の指定は「画像の抽出」を参照
elemImage.setPassThrough(true);             //パススルー設定をオンに指定

//画像の出力処理は「画像の抽出」を参照

特定条件を満たしてPDFに埋め込まれていた画像(※)の場合、埋め込まれた画像をそのまま抽出することができます。

それ以外の場合は新規画像として出力されます。

(※)

参考:

・ページ全体からのテキスト抽出

『PDF CookBook(第3巻)1.1.1 ページから全テキスト抽出』

https://www.antenna.co.jp/ptl/cookbook/vol3/i01-0009.html

・矩形を指定してのテキスト抽出

『PDF CookBook(第3巻)1.1.2 指定矩形からテキストを抽出』

https://www.antenna.co.jp/ptl/cookbook/vol3/i01-0010.html

・特定文字の置換をしたテキスト抽出

『PDF CookBook(第5巻)9.1 特殊文字の処理』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0060.html

・重なり合う文字の制御をしたテキスト抽出

『PDF CookBook(第5巻)9.2 抽出における重なり合う文字の制御』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0066.html

・画像の抽出

『PDF CookBook(第3巻)2.1.2 指定した画像を抽出』

https://www.antenna.co.jp/ptl/cookbook/vol3/i01-0014.html

『PDF CookBook(第3巻)2.1.3 出力画像形式の指定』

https://www.antenna.co.jp/ptl/cookbook/vol3/i01-0015.html

・埋め込まれた画像の画質のままに抽出

『PDF CookBook(第5巻)5.2.1 PDFにExif付きJPEG画像を埋め込み、元の画像のまま抽出する』

https://www.antenna.co.jp/ptl/cookbook/vol5/i03-0034.html

Please enter alt text.