Tesseract: 古い文書から 16 進数とバイナリ文字列を OCR する

Tesseract: 古い文書から 16 進数とバイナリ文字列を OCR する

テッセラクトについていくつか質問があります

コンテクスト

私は現在、80 年代に開発された東ドイツ (GDR) の古い暗号化アルゴリズムに取り組んでいます。アルゴリズムを C# で実装しました。現在、チェックしたいテスト ケースが 30 ページほどあります。バイナリ/16 進文字列をすべて手動で入力したくないので、Tesseract (または動作する無料ソフトウェア) を使用して OCR 処理したいと考えています。

問題

満足のいく結果が得られません。詳細は以下で説明します。

現在のステータス

(申し訳ありませんが、画像を直接投稿することはできません) ドキュメントは次のようになります。 ページの一部/手紙の詳細

素朴なアプローチ

デフォルト設定(関連部分ではドイツ語を使用するので問題ないはずです)では、悲惨な結果になります。

tesseract -l deu input.tiff output pdf

結果は次のようになりますこれ
特にゼロは問題を引き起こします。単語、文字、1 は少しだけ認識されやすくなります。

試したこと(前処理)

  1. ページを回転する
  2. コントラストを上げます
  3. 画像を2値化する
  4. 文字間の小さな隙間を埋めるために画像を縮小/拡大します

最終結果は次のようになりますこれ私が知る限り、OCR によって状況が少し改善されるはずです。

試してみたこと(Tesseractの設定)

私の設定ファイルは次のようになります:

load_system_dawg F
load_freq_dawg F
language_model_penalty_non_dict_word 0
language_model_penalty_non_freq_dict_word 0
tessedit_create_pdf T
tessedit_char_whitelist 0123456789ABCDEF

基本的に、私は Tesseract に、文字から有用な単語を作ろうとせず、16 進文字列に必要な文字のみを許可するように指示します。

ご覧のようにこここれにより、わずかに良い結果が得られますが、すべての場合に当てはまるわけではありません。最後の行のいくつかのゼロは、大幅に適切に検出されます。F の間では、何も起こりません。

ニューラルネットワークと従来のOCR(--oem 0/1)の設定を試してみると、少し違いがあります。従来のアルゴリズムは、多くの0を9として検出しますが(0として検出することはありません)、一貫性ははるかに高くなります(ただし、良くはありません)。

質問

結果を改善するために、さらに何ができるでしょうか? ニューラル ネットをさらにトレーニングできることはわかっていますが、私が読んだ内容では、これには避けたい労力がかかります (自分で Tesseract を構築し、ML を動作させ、ラベル付きのテスト データを作成するなど)。

他に何か?

ご協力いただきありがとうございます。

関連情報