私的AI研究会 > TryOCR2

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

 「OCR アプリケーション実用編 1」で作成したアプリケーションを改良し、帳票のずれに対処するアルゴリズムを組み込み精度の向上を図る。

※ 最終更新:2022/03/18 

帳票の位置ずれの補正

事前準備

縦横位置補正の手順

  1. 「最初の文字検出位置」を追加したフォーマットで帳票フォームを登録する。

    ・帳票名の領域は1文字程度の空白を創って登録する。
    ・このスペースで位置ずれを吸収することになる。
  2. 最初の「帳票名」検出時に得られる文字位置の座標から以後の領域座標を調整する。

    ・新規の帳票で「帳票名」検出後の x0, y0 を登録フォームの座標系に変換し x0' y0' を得る。
    ・登録フォームの x y から補正値を計算 xofset = x0'-x, yofset = y0'-y
    ・以後のフォームの領域座標には xofset, yofset を加える。
     OCR の処理 「~/workspace_py37/tryocr」
    
    
        # -- 画像データから OCR テキスト
        def image2string(img, mode, lang, layout):
            text = ''
            x0 = 0
            y0 = 0
            x1 = 0
            y1 = 0
            if mode == 0:
                line_and_word_boxes = tool.image_to_string(img, lang=lang,
                                builder=pyocr.builders.LineBoxBuilder(tesseract_layout=layout))
                for lw_box in line_and_word_boxes:
                    text = lw_box.content                           # 1行前提で処理
                    position = lw_box.position
                    x0 = position[0][0]
                    y0 = position[0][1]
                    x1 = position[1][0]
                    y1 = position[1][1]
                    break
            else:
                lng = 'eng' if mode == 4 or mode == 5 else lang     # 金額は英語で
                text = tool.image_to_string(img, lang=lng,
                            builder=pyocr.builders.TextBuilder(tesseract_layout=layout))
            return text, x0, y0, x1, y1

傾き補正

自動処理プログラムの結果評価と課題

評価に使用した帳票画像 (社外秘情報を含むため結果のみ)

実行結果

今後の課題

 

更新履歴

 

参考資料

 

Last-modified: 2022-03-18 (金) 05:40:46