OCR - 光学文字認識#
PyMuPDF にはOCR(光学文字認識)の統合サポートがあります。OCRは、画像( Pixmap クラスを介して)および文書ページの両方に使用できます。
この機能は現在、Tesseract-OCRに基づいており、別途アプリケーションとしてインストールする必要があります。インストール手順は、インストールチャプターを参照してください。
画像のOCR方法#
サポートされている画像はまず Pixmap に変換される必要があります。次に、Pixmapを1ページのPDFに保存できます。このページは、元の画像と同じ幅と高さを持つように見えます。それには、Tesseractによって認識されたテキストのレイヤーが含まれています。
PDFは、次のいずれかの方法、つまり Pixmap.pdfocr_save()
または Pixmap.pdfocr_tobytes()
を使用して、ディスク上のファイルとして、またはメモリ内のPDFとして生成できます。
通常のテキスト抽出および検索方法( Page.get_text()
、 Page.search_for()
など)を使用して、テキストを抽出および検索することができます。また、次の重要な事実と前提条件にも注意してください:
画像をPixmapに変換する際に、カラースペースがRGBであり、alphaが
False
(透明度なし)であることを確認してください。必要に応じて元のPixmapを変換してください。すべてのテキストは、Tesseractの独自の
GlyphLessFont
で「非表示」として書かれています。これは、Courierに類似したメトリクスを持つ等幅フォントです。すべてのテキストは、regularとblackのプロパティを持ちます(太字や斜体はなく、元のフォントに関する情報はありません)。
Tesseractはベクトルグラフィックスを認識しません(つまり、図面や線画はありません)。
スキャンされた完全なPDFをOCRするためにも、この手法が推奨されています:
各ページを所望の解像度で Pixmap にレンダリングします
得られた1ページのPDFを出力PDFに追加します
ドキュメントページのOCR方法#
サポートされているどのドキュメントページでもOCR処理が可能です。ページ全体、またはその上の画像領域のみを対象にすることができます。
光学文字認識は通常のテキスト抽出よりも約1000倍遅いため、1ページにつき1回だけOCR処理を行い、その結果をTextPageに保存します。この TextPage (テキストページ) をすべての後続の抽出とテキスト検索に使用することで、PyMuPDFの通常の高速性で処理が行われます。
ドキュメントページをOCRするには、この手順に従ってください:
まず、OCRが全く必要であるか、または有益かどうかを判断します。この決定には、次のような基準を使用できます:
ページが画像で完全にカバーされている
ページにテキストが存在しない
数千の小さなベクトルグラフィックス( 模擬 テキストを示す)
ページをOCR処理し、結果を TextPage (テキストページ) オブジェクトに保存します。この操作は、
tp = page.get_textpage_ocr(...)
のような命令を使用して行います。以降のすべてのテキスト抽出と検索では、
textpage=tp
パラメータを使用して生成された TextPage (テキストページ) を参照してください。