私的AI研究会 > TryOCR

OCR アプリケーション実用編 1

 基本編での検証をもとに実用的な AI開発に向けて、文字認識エンジン「Tesseract」(テッセラクト)を使用した「OCR アプリケーション」を開発する。

※ 最終更新:2022/02/16 

プログラムの動作環境

 以下のプログラムは「anaconda」の仮想環境下で動作する。
「PyTorch ではじめる AI開発」と同じ環境を使用する。

Linux(Ubuntu) での環境構築方法~

Windows

モジュールの追加

「Tesseract」の認識精度を上げる

OCR 自動帳票認識プログラム「tryocr_go.py」

主な仕様

  1. 帳票フォーム編集ソフト「tryocr_edit.py」であらかじめ領域設定されたパラメータにより文字を自動認識する。
  2. 入力データはフォルダ(/○○○○○)単位にまとめられた画像ファイル(jpeg,jpg,png,bmp)とする。
  3. プログラムの起動はコマンドラインから行う。
  4. コマンドライン引数として次のパラメータを指定できる。
    コマンドオプションデフォールト設定意味
    -l, --languagejpn言語
    --layout6tesseractレイアウト(0-13)
    --lognログ出力フラグ (y/n)
    -o, --outtryocr_go.csvCSV 出力ファイル
    --mlty連続編集フラグ (y/n)
    (py37) $ cd ~/workspace_py37/tryocr
    (py37) $ python3 tryocr_go.py -h
    
    --- TryOCR Test Program  Ver 0.01 ---
     OpenCV version 4.5.2 
    
    usage: tryocr_go.py [-h] [-l LANGUAGE] [--layout LAYOUT] [--log LOG]
                        [-o CSV_OUT] [--mlt MULTI]
    
    optional arguments:
      -h, --help            show this help message and exit
      -l LANGUAGE, --language LANGUAGE
                            Language. Default value is 'jpn'
      --layout LAYOUT       Tesseract layout Default value is 6
      --log LOG             Log flag.(y/n) Default value is 'n'
      -o CSV_OUT, --out CSV_OUT
                            CSV file path. Default value is tryocr_go.csv
      --mlt MULTI           Multi flag.(y/n) Default value is 'y'
  5. 起動後、「--mlt」パラメータに従い「対象ディレクトリ選択」(--mlt y) または「対象画像選択」(--mlt n) ダイアログを表示する。

  6. 初回起動時(フォーマット登録がない場合) は帳票フォーマット編集の選択画面を表示する。
    1. 「Yes」を押すと帳票フォーム編集ソフト「tryocr_edit.py」が起動し、対象ファイルに対するフォーム編集ができる。
    2. フォーム未設定の初回起動の場合は、フォーム登録後次のファイルが登録フォームと一致しない場合は常に「編集選択」ダイアログを表示する。
    3. 「編集選択」ダイアログで「No」を押すと自動実行モードとなり、それ以降 一致するフォームがない場合(初回はすべて)該当ファイルはエラーフォルダ(/○○○○○_err)に移動する。

  7. 2回目以降の起動(フォームが1つでも登録されている場合)では「編集選択」ダイアログ は表示されずフォーム不一致の場合、該当ファイルは自動的にエラーフォルダに移動する。
  8. 自動実行中やむを得ず中止したい場合は「Ctrl + C」を押す。

  9. 帳票フォーマット編集を終了すると、同じ帳票ファイルを再度登録したフォーマットで認識シーケンスを実行する。
  10. 本プログラムをフォルダ(/○○○○○)に対して実行すると、結果認識できなかったファイルはエラーフォルダ(/○○○○○_err)に移される。
  11. 本プログラムをエラーフォルダ(/○○○○○_err)に対して実行すると、認識できたファイルは元のフォルダ(/○○○○○)に戻される。
  12. 本プログラムは同一フォルダに対して何度でも実行可能である。

  13. CSV出力ファイルに対して、同一ファイル名の帳票に対しては書き込みは行わない。
  14. 再度の CSV出力ファイルはあらかじめ CSVファイルを削除してから実行する。
  15. 既に CSV 出力したファイルが存在して同じファイル名の登録がない場合に追記する。
  16. ファイル名が異なる同じ帳票があった場合本プログラムではチェックしない。(2重登録となる)

フォーム編集プログラムの操作方法

※ 全項目を登録しないで「Quit」を押した場合は現在の全処理の中断とみなす。

OCR で認識する項目とフォーム一致の判断

項目有効性の検査
帳票名(KyeName)フォームとの文字列比較請求書
日付(Date)西暦・年号(令和のみ)の検査後フォーマット(YYYY/MM/DD)に変換2022/02/10
会社名(CompName)文字認識結果の空白を削除(要検討)株式会社エムズファクトリー
案件名(Title)文字認識結果の空白を削除(要検討)ソフト開発
税抜金額(B4Tax)数字を抽出(記号や空白を削除)した結果が2桁以上であること10000
税込み金額(TotalMoney)数字を抽出(記号や空白を削除)した結果が2桁以上であること&br税抜金額より大きい値であること10100

開発プログラム Tips

OCR 帳票フォーマット編集プログラム「tryocr_edit.py」

 本プログラムは OCR 自動帳票認識プログラム「tryocr_go.py」から呼び出し使用するが、コマンドラインから単独で起動することもできる。
 この場合、既に登録した別のフォーマットを下書きとして利用できる機能が付加される。

主な仕様

  1. 帳票フォームの項目の領域ををマウスドラッグで指定して OCR 認識結果を確認しながら登録する。
  2. 入力データは画像ファイル(jpeg,jpg,png,bmp)とする。
  3. プログラムの起動はコマンドラインから行う。
  4. コマンドライン引数として次のパラメータを指定できる。
    コマンドオプションデフォールト設定意味
    -l, --languagejpn言語
    --layout6tesseractレイアウト(0-13)
    --lognログ出力フラグ (y/n)
    --mlty連続編集フラグ (y/n)
    (py37) $ cd ~/workspace_py37/tryocr
    (py37) $ python3 tryocr_edit.py -h
    
    --- TryOCR Template Edit Program Ver 0.01 ---
     OpenCV version 4.5.2 
    
    usage: tryocr_edit.py [-h] [-l LANGUAGE] [--layout LAYOUT] [--log LOG]
                          [--mlt MULTI]
    
    optional arguments:
      -h, --help            show this help message and exit
      -l LANGUAGE, --language LANGUAGE
                            Language. Default value is 'jpn'
      --layout LAYOUT       Tesseract layout Default value is 6
      --log LOG             Log flag.(y/n) Default value is 'y'
      --mlt MULTI           Multi flag.(y/n) Default value is 'y'
  5. 起動後、「画像ファイルの選択」ダイアログを表示する。
  6. 帳票画像ファイルを指定すると編集のためのウインドウを表示する。
  7. コマンドラインから起動した場合前記の自動実行プログラムから起動した場合と異なる機能がある。
    1. ウインドウ左下に登録済みフォームを読み込むための「Load」ボタンを付加する。(操作方法は次項)
    2. 連続実行フラグ(--mlt)指定により「Next」ボタンを付加する。('n'にすると1回桐の実行)
    3. 「Quit」ボタンは作業中止機能となる。
    4. 編集状況確認のためログ出力フラグはデフォールトで 'y'となる。(起動時のパラメータ指定で 'n'にすることも可)

フォーム編集プログラムの操作方法 (コマンド起動時)

⑰ 参照できる登録済みフォーマットがある場合は「Load」ボタンを押してファイルを選択する。(例: sample0a.png の時、sample0.png)

⑱ 登録済みフォームの領域データを使って OCR認識した結果を認識できたと推定できる場合赤色の枠と認識結果の文字を表示する。
 認識できない設定領域の枠は緑色で表示する。
 項目のモードを確認しながらそのまま使える場合は「Save」ボタンを押して登録する。
⑲ 認識できていない領域に対しては、登録モードを確認しながらマウスドラッグで設定し直す。

・同様の操作ですべての項目を登録して「Next」ボタンを押す。単一処理モードの場合は「Quit」ボタンを押して編集を終了する。

開発プログラム Tips

 

更新履歴

 

参考資料

 

Last-modified: 2022-04-14 (木) 10:59:51