pd3f-core
実験的なものなので注意して使用してください。
pd3f-core
、言語モデルを使用してPDFから元の連続テキストを再構築するPython パッケージです。 pd3f-core
、PDF がテキストベースであるか、すでに OCRd されていると想定します。 pd3f-core
、完全な Docker ベースのテキスト抽出パイプライン (OCR を含む) である pd3f の中心です。
pd3f-core
、まず Parsr を使用して PDF を行と段落に分割します。次に、Python パッケージ dehyphen を使用して、最も可能性の高い方法で段落を再構築します。この確率は、Flair の文字ベースの言語モデルを使用して困惑度を計算することによって導出されます。不要なハイフンは削除され、スペースや改行は周囲の単語に応じて保持または削除されます。
主にドイツ語用に開発されていますが、他の言語でも動作するはずです。このプロジェクトはまだ初期段階にあります。荒削りな状況や急速な変化が予想されます。
pd3f-core の API ドキュメント: https://pd3f.github.io/pd3f-core/index.html
pd3f のドキュメント (): https://pd3f.com/docs/
ハイフン ('-') を削除して 2 つの行を結合できるかどうかを確認します。
行を結合するときに、単純なスペース (' ') を追加するか新しい行 ('n') を追加するかを決定します。
ページの最後の段落と次のページの最初の段落が結合できるかどうかを確認します。
段落を結合する (および改ページを反転する) には、脚注を検出し、脚注を文末脚注に変換します。現時点では、脚注はファイルの末尾に表示されます。
ヘッダーまたはフッターがすべてのページで同じである場合は、それらを 1 回だけ表示します。ヘッダーはドキュメントの先頭に、フッターは末尾に引き出されます。フッターの類似性に基づくいくつかのヒューリスティックが使用されます。 (テキストのジャカード距離、重なり合う形状の比較)
pip install pd3f
または
poetry add pd3f
ローカルの Parsr インスタンスを開始します。
docker-compose up
(リモートの Parsr インスタンス (スクリプト) をトンネルしたり、リモート アドレスを選択したりすることもできます。)
from pd3f import extract
text , tables = extract ( file_path , tables = False , experimental = False , force_gpu = False , lang = "multi" , fast = False , parsr_location = "localhost:3001" )
ドキュメント内のパラメータの説明: https://pd3f.github.io/pd3f-core/export.html#pd3f.export.extract
CUDA を使用すると、Flair による評価が高速化されます。ただし、(高価な)GPU が必要です。 CUDA を使用して GPU を設定する必要があります。 Ubuntu 18.04のガイドはこちら
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
(例)pd3f-core
詩とともにインストールします: poetry add pd3f
Poetry は、conda 仮想環境内で実行されていることを認識しているため、新しい仮想環境を作成しません。 CUDAの設定は難しいので、一番簡単な方法(condaを使う)でインストールしてください。
pd3f-core
の中心となるのは、Parsr の JSON 出力です。特定のものがどのように、そしてなぜ選ばれたのかについてのコメント。さまざまなモジュールに関する Parsr のドキュメント
Parsr には、段落を特定のタイプに分類するためのモジュールがいくつかあります。リスト検出と見出し検出を提供します。私の経験上、どちらも精度が低すぎるため、現在は使用していません。これは、抽出された (出力) テキストがすべてフラット (見出しなし、異なる書式設定など) であることも意味します。
どの段落が他の段落の後に続くのかを理解する必要があるため、描画 + 画像検出を有効にします。これは、段落を結合するかどうかを決定するときに役立ちます。ただし、 fast
設定を有効にするとドロップされます。
JSON 出力にはフィールドpageNumber
があります。これはページ検出モジュールからのものです。したがって、 pageNumber
は各ページのヘッダー/フッターから取得されます。したがって、ページ配列内のインデックスとは異なる場合があります。 JSON 出力のpageNumber
を中継しないでください。
words-to-line-new
このように使用されています。誤差はありませんが、それ以外で使用すると精度が低下します。
" words-to-line-new " ,
[
" reading-order-detection " ,
Parsr で OCR を実行しないでください。結果は OCRmyPDF より悪いためです (後者は画像の前処理を使用するため)。
詩をインストールして使用します。
アフェロ一般公衆利用許諾書 3.0