Tips & Tricks

右から左へ記述する言語の PDF を正しく OCR する方法

OCR PDF エンジンは、左から右へのテキスト フローを中心に構築されています。アラビア語、ヘブライ語、ペルシア語、ウルドゥー語などの右から左へ書く文字で書かれたドキュメントをユーザーに与えると、エンジンはスクリプトの方向を検出し、正しい視覚的および論理的順序で文字を認識し、ターゲット言語で自然に読めるテキストを出力する必要があります。これらの手順の 1 つを間違えると、技術的には認識されても機能的には使用できないテキストが生成されます。つまり、逆に綴られた単語、末尾から始まる文、周囲のテキストの反対側に数字が表示されるなどです。

右から左へ記述する言語に適切な OCR を実行するには、ターゲット スクリプトを明示的にサポートする OCR エンジンを選択し、正しい言語パラメータで構成し、双方向テキスト対応ツールを使用して出力を検証する必要があります。このプロセスは、左から右へ記述する言語の場合、OCR よりもそれほど難しくはありませんが、多くのユーザーがスキップする構成手順 (どの言語を期待するかをエンジンに指示する) は、右から左へ記述するスクリプトの場合はオプションではありません。エンジンをデフォルト設定 (通常は英語) のままにすると、アラビア語またはヘブライ語の文書から無意味な出力が生成されます。

WukongPDF の スキャン PDF OCR ツールは、右から左へ書くスクリプトを含む複数の言語をサポートしています。 OCR を実行する前に正しい言語を選択することは、使用可能なテキストを抽出することと文字ノイズを生成することの違いです。

How to OCR a Right-to-Left Language PDF Correctly

明示的な構成がないと右から左への OCR が失敗する理由

OCR エンジンは形状を分析し、指定された言語の文字セットの文字にマッピングします。エンジンが英語を想定している場合、図形はラテン文字として解釈されます。アラビア文字の B は、多くのフォントでラテン文字の B に似ていますが、Ayn のアラビア文字には同等のラテン文字がありません。英語モードのエンジンが Ayn に遭遇すると、ランダムな句読点が出力されるか、文字が完全にスキップされます。文書全体にわたって、この文字ごとの誤認識により、元のテキストと無関係な出力が生成されます。

正しいスクリプトが選択されている場合でも、テキストの方向によって第 2 層の複雑さが生じます。 OCR エンジンは、デフォルトで画像を左から右に処理し、ピクセルの各行を左端から右端まで移動します。右から左へ記述するドキュメントは、エンジンが書かれた順序で文字を読み取るように、右から左へ処理する必要があります。エンジンが右から左へのスクリプトの処理方向を逆にしない場合、認識される文字は各単語内で逆の順序になります。一部のエンジンは、言語パラメータが設定されると、方向の反転を自動的に処理します。明示的なテキスト方向フラグを必要とするものもあります。

WukongPDF

PDF OCRを試してみる

インストールは必要ありません。ブラウザで直接動作します。

始める →

右から左への OCR 用に Tesseract を構成する

オープンソース OCR エンジンである Tesseract は、言語固有のデータ ファイルを通じて、アラビア語、ヘブライ語、ペルシア語、ウルドゥー語、およびその他のいくつかの右から左へ記述するスクリプトをサポートしています。対象スクリプトの言語データをインストールします。 Linux では、パッケージの名前は通常、アラビア語の場合は tesseract-ocr-ara 、ヘブライ語の場合は tesseract-ocr-heb です。 Windows では、トレーニング済みデータ ファイルを Tesseract GitHub リポジトリからダウンロードし、tessdata ディレクトリに配置します。

言語フラグを正しいスクリプトに設定して Tesseract を実行します: tesseract input.pdf Output -l ara (アラビア語の場合)、-l heb (ヘブライ語の場合)、または -l ara+eng (アラビア語と英語のバイリンガル文書の場合)。 Tesseract は、言語パラメーターで右から左へのスクリプトが指定されている場合、テキストの方向を自動的に処理します。認識されたテキスト出力では、正しい読み上げ順序が保持されます。確認するには、出力テキスト ファイルを開いて、単語が予期した方向に読まれ、文が右から左に流れることを確認します。

英語の専門用語を含むアラビア語の研究論文など、スクリプトが混在する文書の場合は、両方の言語をプラス記号で区切って指定します (-l ara+eng)。 Tesseract は、単語ごとに言語モデルを切り替え、アラビア語モデルをアラビア文字の単語に適用し、英語モデルをラテン文字の単語に適用します。単語ごとの切り替えは、特にどちらかのスクリプトに属する可能性のある短い単語では完全ではありませんが、混合スクリプト文書の大部分は適切に処理されます。

自動検出に Google Cloud Vision を使用する

Google Cloud Vision の OCR 機能には、自動言語検出が含まれています。これは、正確な言語がわからない場合や、文書に複数の右から左へ記述する言語が含まれている場合に、右から左へ記述するスクリプトに特に役立ちます。 API はドキュメント画像を受け取り、各単語の境界ボックスを含む認識されたテキスト、各テキスト ブロックの検出された言語、およびテキストの方向を返します。右から左へ記述するスクリプトの場合、返されるテキストはすでに正しい読み取り順序になっています。

Cloud Vision のアラビア語とヘブライ語の認識品質は、基礎となるモデルがより大規模で多様なデータセットでトレーニングされているため、一般的に Tesseract よりも高くなります。トレードオフとして、処理のために文書画像を Google のサーバーにアップロードする必要がありますが、これは機密文書や機密文書には受け入れられない可能性があります。 Cloud Vision は、公的に入手可能な文書またはクラウド処理が承認されている社内文書に対して、専用のデスクトップ OCR ソフトウェアを購入しなくても、最も正確な右から左への OCR を提供します。

言語OCR エンジンのサポート精度に関する注記
アラビア語Tesseract、Google Cloud Vision、ABBYY発音区別符は省略される可能性があり、合字の処理は異なります
ヘブライ語Tesseract、Google Cloud Vision、ABBYYOCR 中に Nikud の母音ポイントが失われることがよくあります
ペルシア語/ウルドゥー語Tesseract、Google クラウド ビジョンNastaliq スクリプトの亜種はほとんどのエンジンに挑戦します

右から左へ記述するテキストの OCR 出力の検証

OCR 後、双方向テキスト レンダリングをサポートするテキスト エディター (双方向プラグインが有効になっている Notepad++、または RTL 言語パックがインストールされている Visual Studio Code など) で認識されたテキストを開きます。左から右のテキストを前提とする標準的なテキスト エディタは、Unicode 双方向アルゴリズムが実装されている場合、右から左のテキストを正しく表示する可能性がありますが、行末の句読点とテキスト内の数値の相対的な順序が一般的な障害点となります。明示的な双方向サポートを備えたテキスト エディタでは、ネイティブ スピーカーが読むと想定されるテキストが表示されます。

スキャンした元の文書に対して出力を 3 つのレベルで抜き取りチェックします。個々の単語、特に発音記号や合字を含む単語。完全な文。語順がターゲット言語で自然に読めることを確認します。数字と日付を入力し、それらが周囲のテキストの正しい側に表示されていることを確認します。すべての単語が正しく認識されているにもかかわらず、各文内で語順が逆になっている文書は、単語がまったく認識されない文書と同様に、翻訳や検索に使用できません。

右から左へ記述する言語の OCR は、正しい言語パラメータが設定されていれば技術的な問題は解決されます。最も重要なステップは、エンジンにどのようなスクリプトを期待するかを伝えることです。認識精度から読み上げ順序、混合スクリプトの処理に至るまで、その決定以降のすべては、言語構成を正しく行うかどうかにかかっています。言語パラメーターが構成され、検証のために双方向テキスト エディターが開かれていれば、右から左へ記述する言語ドキュメントの OCR は、他の言語の OCR よりも時間も労力もかかりません。

右から左へ記述する言語テキストの OCR 後の翻訳

テキストが正確に認識されると、右から左への言語コンテンツを翻訳するには、双方向テキストを正しく処理する翻訳エンジンが必要になります。 Google 翻訳と DeepL はどちらもアラビア語、ヘブライ語、ペルシア語をサポートしています。認識されたテキストを翻訳インターフェイスに貼り付け、ソース言語が正しく識別されていることを確認します。翻訳エンジンはスクリプトの方向を検出し、それを出力に保存します。翻訳がネイティブ スピーカーによってレビューされるドキュメントの場合は、元の認識されたテキストと翻訳されたテキストの両方を 2 列の表に並べてエクスポートし、効率的に比較できるようにします。

右から左へ記述する言語の機械翻訳は、多くの右から左へ記述する言語ペアのトレーニング データが小さいため、一般に左から右へ記述するヨーロッパ言語間の翻訳よりも精度が低くなります。重要な文書の場合は、内容に基づいて行動する前に、ネイティブ スピーカーに翻訳をレビューしてもらいます。 OCR ステップにより、正確なソース テキストが生成されます。翻訳ステップでは、解釈の層が追加されます。 OCR 出力を文書の内容に関する正確な情報として扱い、機械翻訳を検証を前提とした文書の意味を示すガイドとして扱います。

右から左へ記述する言語の PDF のバッチ処理

右から左へ読む言語の PDF のフォルダーを OCR する場合、Tesseract のコマンド ライン インターフェイスはバッチ入力を受け入れます。単一のシェル コマンドですべての PDF を処理します。 do tesseract $f ${f%.pdf} -l ara;終わり。このコマンドはすべての PDF をループし、アラビア語モデルで OCR を実行し、認識されたテキストを一致するベース ファイル名で各 PDF と一緒に保存します。

混合言語バッチの場合は、OCR の前に言語検出ステップを使用します。 langdetect ライブラリを使用した Python スクリプトは、テキストの最初のページをサンプリングして言語を予測します。予測に基づいて、スクリプトは適切な Tesseract 言語パラメーターを選択し、OCR を実行します。自動言語検出により、バッチ処理前に PDF を言語ごとに手動で並べ替える必要がなくなります。右から左へ記述する言語のバッチ OCR は、退屈なドキュメントごとのプロセスを、入力フォルダー内のドキュメントの数に関係なく、数分で完了する単一のコマンドに変換します。

右から左に記述する言語の OCR は、特殊なツールを必要とする特殊なケースではありません。正しい言語パラメータで構成された、左から右への OCR と同じツールが必要です。 OCR のデフォルトが機能すると想定しているため、多くのユーザーがスキップする設定手順は、使用可能な抽出テキストと完全な文字ノイズのまったくの違いです。言語フラグを設定し、OCR を実行し、双方向テキスト エディタで出力を確認すると、プロセスは完了です。右から左へ記述するスクリプトの OCR は、時間をかけて言語パラメーターを正しく構成し、双方向テキスト エディターで出力を検証するユーザーに報酬を与えます。そうしないと、ソース言語を読まない人にはアクセスできないドキュメントから、正確で使用可能なテキストが生成されます。

WukongPDF

PDF OCRを試してみる

インストールは必要ありません。ブラウザで直接動作します。

始める →