Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

構造化コンテンツをMarkdownとして抽出

JPedalは、構造化されたPDFファイルからコンテンツをMARKDOWNとして抽出することをサポートしています。

構造化PDFファイルと非構造化PDFファイル

PDFファイルは、タグ付き、構造化テキストを含む、またはマークされたコンテンツを含む場合があります。これらの用語はしばしば同じ意味で使われますが、実際にはページ構造とその要素に関する情報を含むPDFファイルを指します。本記事では、これらを「構造化」PDFファイルと呼びます。

構造化PDFファイルには、PDF内のテキストコンテンツの構造を保持するためのメタデータタグ(HTMLに類似)が含まれています。PDFは構造化または非構造化として作成されるため、一般的に非構造化PDFファイルを構造化PDFファイルに変換することは現実的ではありません。

構造化PDFファイルの利点は、コンテンツを抽出して他の形式に変換できることです。JPedalは現在、このコンテンツをEPUBHTMLJSONMarkdownXML 、またはYAML として出力することをサポートしています。

JPedalは、PDFファイル内に存在するすべての構造化テキストを抽出できます。構造化テキストが存在しない場合、出力ファイルにはコンテンツが利用できなかった旨を説明する簡単なメッセージが含まれます。

PDFファイルには、構造化コンテンツ内に画像が含まれている場合もあり、これらは図と呼ばれます。図にalt textまたはactualtextが含まれている場合、これらも出力に含まれます。Java APIメソッドを使用している場合は、画像のスケーリング値を指定できます。

JavaでPDFから構造化コンテンツをMARKDOWNとして抽出

// オプション
ExtractStructuredTextProperties properties = new ExtractStructuredTextProperties();
properties.setFileOutputMode(OutputModes.MARKDOWN); // 出力形式        

// 構造化テキストをMARKDOWNとして抽出
ExtractStructuredText.writeAllStructuredTextOutlinesToDir(
        "inputFileOrFolder", // 単一のPDFまたはPDFを含むフォルダ
        "password",          // パスワード、不要な場合はnull
        "outputFolder",      // MARKDOWNの出力フォルダ
        null,                // エラーコールバック
        properties           // 設定オブジェクト
);

// 構造化テキストと画像をMARKDOWNとして抽出
ExtractStructuredText.writeAllStructuredTextOutlinesAndFiguresToDir(
        "inputFileOrFolder", // 単一のPDFまたはPDFを含むフォルダ
        "password",          // パスワード、不要な場合はnull
        "outputFolder",      // MARKDOWNの出力フォルダ
        null,                // エラーコールバック
        properties           // 設定オブジェクト
        "figuresFolder",     // 画像の出力フォルダ
        "imageFormat",       // 画像の形式
        1.0f                 // 画像のスケーリング
);

コマンドラインまたは他の言語からPDFの構造化コンテンツをMARKDOWNとして抽出

java --module-path . --add-modules com.idrsolutions.jpedal org/jpedal/examples/text/ExtractStructuredText 
"inputFileOrFolder" "outputFolder" "markdown"

モジュールの使用を推奨しますが、必要に応じてクラスパスを使用 することもできます。

Javadocs

この例では、JPedalのExtractStructuredText クラスを使用しています。