bunkoOCR (Windows)

Last Update: 2023/09/17

bunkoOCRのWindows版のページです。

download

https://lithium03.info/archives/bunkoOCR/bunkoOCR_20230918.zip

bunkoOCR_20230917に、元ファイルを誤って上書きするバグがあります。使用した方は、元ファイルを確認お願いします。

アプリの説明

findtextCenterNet https://github.com/lithium0003/findtextCenterNet で公開している機械学習モデルを、アプリとして使えるようにしたbunkoOCRのWindows版です。 このプログラムは、画像からOCR(光学文字認識)を行い、テキストに変換します。 新しめのGPUがあると、非常に高速に実行できます。

Windowsで動作します。iOS/macOSで利用したい場合は、こちらのページにあるリンクより AppleStoreからダウンロードしてください。

スクリーンショット

screen image

ソースコード

プログラムのソースコードはこちらです https://github.com/lithium0003/bunkoocr-windows

使い方

ダウンロードリンクから、zipファイルをダウンロードし、任意の場所に展開してください。 bin/bunkoOCR.exeを実行します。(OCRengine.exeは内部用です)

Add fileボタンを押し、ファイルを選びます。もしくは、フォームに画像ファイルをD&Dします。 左側のリストに、待機中のファイルが入ります。 順次処理が始まり、右側のリストに移ったら終了です。

右側のリストでファイルを選んで、Show resultボタンを押すと 結果がHTMLで表示されます。

image.pngを処理した場合

で書き出されます。

なお、jsonファイルだけを先に生成して、後からbin/jsonToText.exeを使用して変換をすることも可能です。

GPU処理の初回について

GPUで処理する場合、初回実行時にキャッシュが生成されるので 非常に時間がかかります。(GPUやPCの状況によっては10分程度かかる場合もあります) 2枚目以降の画像は高速に処理されます。 cacheフォルダを消さない限り、次回以降は高速に処理されます。

設定可能パラメータ

プルダウンメニューから、設定したいパラメータを選び、数値を修正しSetボタンを押すと反映されます。 処理がIdleになっているときしか設定は変えられません。

blank_cutfoff (デフォルト値 35) 0 - 255

裏写り除去のために、薄い文字を無視します。数値を大きくすると、より濃い部分のみが処理対象になります。 ぼんやりと写っている文字が認識されていない場合は、数値を小さくします。

ruby_cutoff (デフォルト値 0.5) 0.0 - 1.0

ふりがなであるかどうかの判定に使用します。 ふりがなである信頼度が、この値を超えた場合ふりがなとして処理されます。 数値を小さくすると、取りこぼしたふりがなを認識できる場合があります。 誤って、ふりがなとして小さい文字が認識されている場合は、数値を大きくします。 ふりがな認識ルーチンを使用したくない場合は、1.0より大きくします。

rubybase_cutoff (デフォルト値 0.4) 0.0 - 1.0

ふりがなの親文字であるかどうかの判定に使用します。 ふりがなの親文字である信頼度が、この値を超えた場合ふりがなの親文字として処理されます。 ふりがなは、ふりがなの親文字として認識された文字の周辺にある場合にのみ処理されます。 数値を小さくすると、ふりがなの親文字であるのに認識されていない文字を認識できる場合があります。 文字のそばに関係ない小さな文字があって、誤ってふりがな扱いされる場合は、数値を大きくすると 解消することがあります。

space_cutoff (デフォルト値 0.75) 0.0 - 1.0

文字開けの判定に使用します。 日本語の行頭の字下げ、文字の間のスペースを認識した場合、スペースの次の文字であるとしてマークするのに 使用します。 数値を小さくすると、空白を検出失敗して、英単語が連結してしまうのが解消する場合があります。 行頭がむやみに字下げされる場合は、数値を大きくすると解消します。

line_valueth (デフォルト値 0.5) 0.0 - 1.0

文の連続方向を検出する線を見つけるのに使う閾値です。 数値を小さくすると、離れ気味の文字を行であると認識できる場合があります。 関係のない横書きと縦書きが、誤って連結されてしまっている場合など、数値を大きくすると信頼度の高い 文のみを連結するので、直る場合があります。

detect_cut_off (デフォルト値 0.5) 0.0 - 1.0

文字がどの場所にあるかを検出するのに使用します。 文字が上手く検出できていない場合、数値を下げると自信のない文字も認識対象にできます。 手書き文字など認識が難しい文字を認識する場合、下げるとよいでしょう。 逆に、漫画の吹き出しを検出する際など、背景に文字と誤認する模様が多い場合は、数値を上げると 誤認識が減ります。 0.35 - 0.75程度が推奨範囲です。

resize (デフォルト値 1) > 0

画像をこの倍率で拡大縮小して、モデルで処理します。 字が小さすぎる場合(おおむね15pixel以下)このモデルでは、処理に失敗することが多くなります。 逆に、大きすぎる文字(モデルの視野は512pixelでおおむねその半分程度を超えるもの)も認識できません。 拡大縮小操作により、モデルの処理しやすい大きさにリサイズできます。

sleep_wait (デフォルト値 0) >= 0

画像を処理した後、指定した秒数だけ待ってから、次の画像を処理します。 熱負荷が大きすぎるときに、少し休ませる必要がある場合に使用してください。 デフォルトでは直ちに次の画像を処理します。

変更履歴

2023/09/09 初版

2023/09/10 裏写り除去ルーチンを入れ忘れていたので修正

2023/09/10b 裏写り除去ルーチンと、文のライン検出のパラメータを修正

2023/09/11
検出パラメータを調整できるように修正
画像のExifに回転情報が入っている場合におかしくなるのを修正

2023/09/14
日本語のファイル名が入ると処理に失敗することがあるのを修正
何も文字がない画像を与えると落ちるのを修正
NvidiaのGPUがない場合に、DirectMLで処理するように修正

2023/09/15
日本語のファイル名が入ると処理結果が虚空に消えるのを修正
複数のGPUがある場合にDirectMLでよさそうなものを選択するように

2023/09/17 一度に沢山のファイルを追加した際に固まるのを修正

2023/09/17b GPUの判定を分離して、失敗した場合はCPUモードで処理するように修正

2023/09/18 GPUを使わないように強制するオプションを追加
パラメータが保存されているparam.configをテキストエディタで開き、
use_GPU:0に書き換えるとDirectMLを使用しないように強制できます。


不具合やバグ、機能追加について何かあればcontact@lithium03.info に教えていただければ時間のあるときに直します。