PDF Textractor

 PDF Textractorとは、PDFからPDF Libraryを使用してテキストを抽出する実装を手助けする、.NET Framework 4.6.1以降に対応したクラスライブラリです。

 PDF Textractorは文字列ではなく文字単位でUnicodeテキスト、フォント名、PDF上での座標位置などの情報を持つ構造化データに変換する機能を提供します。PDFからそのまま文字列としてひとまとまりでテキストを取得すると、紙面中に横書きと縦書きが混在する事が多く、場合によっては縦中横、横中縦など一文の中でも混在する事のある日本語では、誤ったまとまりでテキストが取得されてしまい、結果解析にも誤りをもたらしてしまう事が多くなります。

 このため、精度を高くしたい場合、文字単位で一文字ずつ取得した後、横書き、または縦書きの文字方向や、紙面の癖などを考慮した上で、文字を再結合してまとまりを作った方が良い結果をもたらす場合が多々あります。このような事情から、PDF Textractorでは文字単位での処理を行う前提で、これを手助けするための機能を重視しています。

■ページの解析と構造化

 PDF Textractorは文字の抽出までを主とし、それ以降の処理は利用者による再実装を前提としています。ただし、サンプルとして、基本的なページの解析と構造化の処理も提供します。ページ整形インターフェースIPageFormatterを実装したBasicFormatterがそれにあたります。

 BasicFormatterでは、文字矩形の平坦化を行い、その後文章の向きに応じて解析と構造化を行います。具体的には、文字矩形同士の距離やX、Y座標値のずれから繋がっている文字列であるか否かを判定し、連結を行います。連結を行った結果として、行や段落といった文字のまとまりの単位を構築し、抽出したデータをより有用性の高いものとして扱えるようにします。

 ただし、この部分はPDFによってばらつきが大きく、統一的な処理を行える機能の提供は難しい箇所になります。あくまでユーザーによるクラスの継承やインターフェースの実装などによる再定義を主としており、BasicFormatterは簡易なサンプル実装として、使える場合のみ使用してください。BasicFormatterを継承して、派生クラスで処理のオーバーライドをする事もできます。


■PDF Textractorを使うとできること

 PDF Textractorを使う事で、PDFの文書をページごとに構造化したデータを手に入れる事ができます。ページには、前述の一文字ずつの文字データとその属性データが含まれており、BasicFormatterを利用するとこれを更に行、段落と推測される範囲をグループ化したデータも手に入れる事ができます。

 また、これらの構造化データはJSON形式にシリアライズする事もできます。これらのデータを、PDFの内容を全文検索するためのテキストデータの抽出に利用したり、HTMLにして検索時に特定のキーワードをハイライトする、といった事に使えます。




お問い合わせはこちらから

イースト株式会社 事業推進部