私的AI研究会 > FormOCR2

Form OCR Program 操作マニュアル

 帳票OCRプログラムの主な仕様と操作方法をまとめる。

※ 最終更新:2022/04/16 

OCR 入力前処理プログラム「prepros.py」

「formocr.py」の入力画像を整えるために使用する。PDF ファイルからの画像抽出、縦横位置の回転、水平方向の傾き補正を行う。

主な仕様

  1. 帳票OCRソフト「formocr.py」の入力ファイルの準備ツール。
  2. PDFファイルの場合イメージファイルを抽出する。
  3. イメージファイルの回転(90/180/270)を行う。
  4. イメージファイルの水平方向の傾きを調整する。(回転パラメータを '0'指定)
  5. 入力データはフォルダ(デフォールト)又はファイル単一を選択可能。
  6. 画像ファイルフォーマットは(jpeg,jpg,png,bmp)とする。
  7. プログラムの起動はコマンドラインから行う。
  8. コマンドライン引数として次のパラメータを指定できる。
    コマンドオプションデフォールト設定意味
    --r, --rotate270回転角度 (90/180/270)
    0 = 水平傾き補正
    --lognログ出力フラグ (y/n)
    --mlty連続編集フラグ (y/n)
    (py37) $ cd ~/workspace_py37/formocr
    (py37) $ python3 prepros.py -h
    
    --- File preprocessing Program  Ver 0.01 ---
    
    usage: prepros.py [-h] [-r ROTATE] [--log LOG] [--mlt MULTI]
    
    optional arguments:
      -h, --help            show this help message and exit
      -r ROTATE, --rotate ROTATE
                            image rotation angle.(0/90/180/270) '0' is tilt check.
                            Default is 270
      --log LOG             Log flag.(y/n) Default value is 'y'
      --mlt MULTI           Multi flag.(y/n) Default value is 'y'

「prepros.py」の使い方

  1. コマンドラインから起動する。
    (py37) $ python3 prepros.py (パラメータ指定)           ← ディレクトリ指定
    (py37) $ python3 prepros.py --mlt n (パラメータ指定)   ← ファイル指定
  2. プログラム起動後、「--mlt」パラメータに従い「対象ディレクトリ選択」(--mlt y) または「対象画像選択」(--mlt n) ダイアログを表示する。

  3. 対象となるディレクトリ/ファイルを指定する。

開発プログラム Tips

OCR 帳票認識プログラム「formocr.py」

 あらかじめ登録されたフォーマットに従って帳票の自動処理を行い結果を CSV ファイルに出力する。

主な仕様

  1. あらかじめ領域設定されたパラメータにより文字を自動認識する。
  2. 入力データはフォルダ(/○○○○○)単位にまとめられた画像ファイル(jpeg,jpg,png,bmp)とする。
  3. プログラムの起動はコマンドラインから行う。
  4. コマンドライン引数として次のパラメータを指定できる。
    コマンドオプションデフォールト設定意味
    -l, --languagejpn言語
    --layout6tesseractレイアウト(0-13)
    --lognログ出力フラグ (y/n)
    -o, --outtryocr_go.csvCSV 出力ファイル
    --mlty連続編集フラグ (y/n)
    --tiltn水平傾き補正フラグ (y/n)
    (py37) $ cd ~/workspace_py37/formocr
    (py37) $ python3 formocr.py -h
    
    --- FormOCR Program  Ver 0.01 ---
     OpenCV version 4.5.2 
    
    usage: formocr.py [-h] [-l LANGUAGE] [--layout LAYOUT] [--log LOG]
                      [-o CSV_OUT] [--mlt MULTI] [--tilt TILT]
    
    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 formocr.csv
      --mlt MULTI           Multi flag.(y/n) Default value is 'y'
      --tilt TILT           Tilt Check flag.(y/n) Default value is 'n'
  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 帳票フォーマット編集プログラム「formocr_edit.py」

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

主な仕様

  1. 帳票フォームの項目の領域ををマウスドラッグで指定して OCR 認識結果を確認しながら登録する。
  2. 入力データは画像ファイル(jpeg,jpg,png,bmp)とする。
  3. プログラムの起動はコマンドラインから行う。
  4. コマンドライン引数として次のパラメータを指定できる。
    コマンドオプションデフォールト設定意味
    -l, --languagejpn言語
    --layout6tesseractレイアウト(0-13)
    --lognログ出力フラグ (y/n)
    --mlty連続編集フラグ (y/n)
    (py37)$ python3 formocr_edit.py -h
    
    --- FormOCR Template Edit Program Ver 0.02 ---
     OpenCV version 4.5.2 
    
    usage: formocr_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-16 (土) 13:07:07