Tesseract OCR 4.1 の学習(Windows 上)(書きかけ)

概要

Tesseract OCR 4.1 の学習を行う。ここでの学習は、次の通り。

手順は、次のページの記載による。

https://tesseract-ocr.github.io/tessdoc/#training-for-tesseract-4

新しいフォント、新しい文字を学習させたいときの基礎として説明している。精度の向上のみが目的の場合は、より高い解像度の画像を使う、バージョン 5 でなく、安定版を使うことを検討する価値がある。

公式ドキュメントでは、後述の tesstrain.sh によるトレーニング方式は非推奨とされており、現行では tesseract-ocr/tesstrain(Make を用いる学習ツール)の利用が推奨されている。

目次

関連する外部ページ

Tesseract: Training for Tesseract 4tesseract-ocr/tesstrain

サイト内の関連情報

Tesseract OCR のインストール手順(別ページ)

前準備

Git のインストール(Windows 上) [クリックして展開]

管理者権限コマンドプロンプトで以下を実行する。管理者権限は,winget の --scope machine オプションでシステム全体にインストールするために必要となる。

REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"

Tesseract OCR 4.1 のインストール

Tesseract OCR のバージョンは、 https://github.com/livezingy/tesstrainsh-win にあわせて、4.1.0 をインストール。

Tesseract OCR は、次の手順でダウンロード

  1. 「Tesseract OCR のバイナリ」の Web ページを開く

    https://github.com/tesseract-ocr/tessdoc

  2. Windows のところの「Tesseract at UB Mannheim」をクリック
  3. 下の「older versions」をクリック
  4. 32 ビット版を選ぶ
  5. Additional script data (download) で 「Japanese script」と「Japanese vertical script」を選ぶ
  6. Additional language data (download) で「Japanese」と「Japanese (vertical)」を選ぶ
  7. インストールディレクトリは C:\Tesseract-OCR とする(空白文字を含まないこと)

Windows での Tesseract OCR のインストール手順: 別ページで説明

Tesseract OCR のテスト実行

最初に、画像ファイルを用意し、テスト実行してみる

"C:\Tesseract-OCR\tesseract.exe" 2255.png outbase -l jpn
notepad outbase.txt 

Tesseract OCR の学習手順(Windows 上)

関連する外部ページhttps://github.com/livezingy/tesstrainsh-win

  1. Windows で,管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. tesstrainsh-win とフォントファイル(langdata_lstm) のダウンロード

    tesstrainsh-win の利用条件などは利用者で確認すること。

    C:
    cd "C:\Tesseract-OCR
    rmdir /s /q tesstrainsh-win
    git clone --recursive https://github.com/livezingy/tesstrainsh-win
    copy /y "C:\Tesseract-OCR\tesstrainsh-win\tessdata\configs\lstm.train" "C:\Tesseract-OCR\tesstrainsh-win\tessdata\configs\lstm.train.DIST"
    xcopy /e /c /h /y "C:\Tesseract-OCR\tessdata" "C:\Tesseract-OCR\tesstrainsh-win\tessdata"
    
    
    cd "C:\Tesseract-OCR\tesstrainsh-win
    rmdir /s /q langdata_lstm
    rmdir /s /q langdata
    git clone --recursive https://github.com/tesseract-ocr/langdata_lstm
    
  3. Windows パソコンでインストールされている Tesseract OCR のバージョンの確認
    "C:\Tesseract-OCR\tesseract" --version
    
  4. C:\Tesseract-OCR にパスを通す

Tesseract OCR の学習手順(Ubuntu 上)

公式には tesseract-ocr/tesstrain(Make を用いる学習ツール)の利用が推奨されている。tesstrain.sh のように学習用テキストファイルから直接学習を進める機能は tesstrain には含まれず、行単位の画像ファイルと、それに対応する書き起こしテキストファイルの組を、教師データとして自分で用意する必要がある。

  1. 学習に用いる日本語ファイル C:\Tesseract-OCR\tesstrainsh-win\jpn.training_text の準備
    copy "C:\Tesseract-OCR\tesstrainsh-win\langdata_lstm\jpn\jpn.training_text" "C:\Tesseract-OCR\tesstrainsh-win\jpn.training_text"
    
  2. "C:\Tesseract-OCR\tesstrainsh-win\jpn.training_text" の編集

    ここでは、次のように編集したとして説明を続ける。

    00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
    -00 -01 -02 -03 -04 -05 -06 -07 -08 -09 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99
    00- 01- 02- 03- 04- 05- 06- 07- 08- 09- 10- 11- 12- 13- 14- 15- 16- 17- 18- 19- 20- 21- 22- 23- 24- 25- 26- 27- 28- 29- 30- 31- 32- 33- 34- 35- 36- 37- 38- 39- 40- 41- 42- 43- 44- 45- 46- 47- 48- 49- 50- 51- 52- 53- 54- 55- 56- 57- 58- 59- 60- 61- 62- 63- 64- 65- 66- 67- 68- 69- 70- 71- 72- 73- 74- 75- 76- 77- 78- 79- 80- 81- 82- 83- 84- 85- 86- 87- 88- 89- 90- 91- 92- 93- 94- 95- 96- 97- 98- 99
    a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    ・
    さ す せ そ た ち つ て と な に ぬ ね の は ひ ふ ほ ま み む め も や ゆ よ ら り る ろ れ わ
    あ い う え か き く け こ を 
    いわき つくば とちぎ なにわ 愛媛 旭川 伊豆 一宮 宇都宮 越谷 奄美 横浜 岡崎 岡山 沖縄 下関 会津 岩手 岐阜 久留米 宮崎 宮城 京都 金沢 釧路 熊谷 熊本 群馬 郡山 広島 香川 高崎 高知 佐賀 佐世保 堺 札幌 三河 三重 山形 山口 山梨 滋賀 鹿児島 室蘭 秋田 習志野 春日井 春日部 所沢 庄内 松本 沼津 湘南 新潟 神戸 諏訪 水戸 杉並 世田谷 成田 盛岡 青森 静岡 石川 仙台 千葉 川越 川口 川崎 前橋 倉敷 相模 足立 袖ヶ浦 多摩 帯広 大宮 大阪 大分 筑豊 長岡 長崎 長野 鳥取 土浦 島根 徳島 奈良 那須 柏 函館 八王子 八戸 飛騨 尾張小牧 姫路 品川 浜松 富山 富士山 富士山 福井 福岡 福山 福島 平泉 豊橋 豊田 北九州 北見 名古屋 野田 鈴鹿 練馬 和歌山 和泉
    
  3. tesseract-ocr/tesstrain の取得

    GNU make(バージョン 4.2 以上)、wgetfindbashunzip、および学習ツール付きでビルドした Tesseract(バージョン 5.3 以上)が必要になる。使用する言語モデル名(MODEL_NAME)を決めておく。

    git clone https://github.com/tesseract-ocr/tesstrain
    cd tesstrain
    pip install --no-user -r requirements.txt
    
  4. 行単位の教師データの用意

    1-2 で用意した日本語ファイルを、行ごとの画像とテキストの組に分ける。text2image(Tesseract 付属のツール)はテキスト全体を1枚の画像にレンダリングするため、その画像を行単位に切り出し、各行の画像ファイルと、対応する書き起こしを収めた同名の .gt.txt ファイルを作成する。できた組を tesstrain/data/jpn_ft-ground-truth ディレクトリに置く。この行分割の作業は、資料や用途に応じて手作業や個別のスクリプトで行う。

  5. 訓練の実行

    終了までしばらく待つ。(教師データが多いなどの場合は、時間がかかる)

    学習は、既存の jpn モデルからの Fine Tuning として行う(START_MODEL に既存モデルを指定)。

    make training MODEL_NAME=jpn_ft START_MODEL=jpn TESSDATA=/usr/local/share/tessdata MAX_ITERATIONS=500
    
  6. モデルファイルの生成、所定の場所へのコピー

    学習で得たチェックポイントから traineddata ファイルを生成し、既存の jpn.traineddata と置き換える。

    make traineddata MODEL_NAME=jpn_ft
    sudo cp /usr/local/share/tessdata/jpn.traineddata /usr/local/share/tessdata/jpn.traineddata.bak
    sudo cp data/jpn_ft/tessdata_best/jpn_ft.traineddata /usr/local/share/tessdata/jpn.traineddata
    
  7. テスト実行し、動作確認
    tesseract 2255.png outbase -l jpn
    cat outbase.txt