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するには、この手順に従ってください:

  1. まず、OCRが全く必要であるか、または有益かどうかを判断します。この決定には、次のような基準を使用できます:

  • ページが画像で完全にカバーされている

  • ページにテキストが存在しない

  • 数千の小さなベクトルグラフィックス( 模擬 テキストを示す)

  1. ページをOCR処理し、結果を TextPage (テキストページ) オブジェクトに保存します。この操作は、 tp = page.get_textpage_ocr(...) のような命令を使用して行います。

  2. 以降のすべてのテキスト抽出と検索では、 textpage=tp パラメータを使用して生成された TextPage (テキストページ) を参照してください。


This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.

Discord logo