Tesseract Ver5.0.0 試用体験記
更新 2021/09/07(火)
(C)文責 炭本 治之
以下は,2021/08/20時点の最新版Ver5.0.0を試用したときの体験記です。
Ver4以下のTesseractには当てはまりません。
■英文画像の文字認識
・文字サイズが同じ,文字と次の文字の間隔がちゃんとあるなら,認識精度は99.9%以上。
誤認識の文字は1000文字に1文字くらいしかない。
・文字サイズが異なる文字が混じっているか,
プロポーショナルフォントで文字と文字の間隔がない場合は,
その文字のところで誤認識するか,
その文字の直後の文字を認識しないことがある。
・言語辞書は,2021年8月20日時点では,
eng.traineddate ファイルサイズ 4MBのもの
eng.traineddate ファイルサイズ 15MBのもの
の2つが公開されている。
固定サイズフォントの場合は,どちらも認識精度は99.9%以上。
プロポーショナルフォントの場合は,後者の方が少しだけ誤認識が少ない。
英文中のギリシャ文字は英字に誤認識する。
■横書き日本語画像の文字認識
・言語辞書は,2021年8月20日時点では,
jpn.traineddate ファイルサイズ 13MBのもの
jpn.traineddate ファイルサイズ 34MBのもの
の2つが公開されている。
(1)jpn.traineddate ファイルサイズ 13MBのもの
ひらがな・カタカナ・漢字に,半角英数字が混じっていてもちゃんと認識する。
ただし,普段あまり使わない漢字は,辞書作成の際に学習させていないようで,
認識できない漢字がある。
例えば,患者の「患」,捏造の「捏」はこの辞書では認識できない。
(2)jpn.traineddate ファイルサイズ 34MBのもの
こちらの方が辞書サイズが大きいので,認識精度も良いだろうと思っていたら,
そうではなかった。
まず,半角英字が混じっていたら,半角英字はでたらめな文字に誤認識する。
半角1〜9は@〜Hに誤認識する。
こちらの辞書は,半角英数字が1文字もないときに使うべき。
漢字の認識では,ShiftJIS漢字1の約6000漢字のほとんどを認識できる。
ただし,認識できない文字も確かにある。
例えば,「鰯」の字は,鯵か鯨に誤認識してしまう。
たぶん,辞書を作成するときに,日本人でもめったに使わないような漢字は
学習させていないのだろう。
■縦書き日本語画像の文字認識
jpn_vertは縦書き日本語認識用の辞書。
Page Segment Modeは5を指定して認識させる。
A6サイズ文庫本を600dpiでスキャンし,できた画像ファイルを認識させたところ,
誤認識文字は10〜20文字に1文字くらいだった。
かなりの数の誤認識文字があるので,それをを手作業で修正する必要がある。
■その他に気づいたこと
(1)ノイズがあっても問題ない
鉛筆で下線が引いてあったり,背景に薄汚れたしみなどのノイズがあっても,
それらを文字として誤認識することがない。
(2)日本語を正しく認識させるコツがある
いきなり,5行以上を一度に認識させると,誤認識文字が多いようだ。
次のように使うと,かなり正確に認識する。
(1)最初は1行で10文字だけを認識させる
(2)次は1行全体を認識させる
(3)誤認識が少ないようなら2行か3行ずつ認識させる
つまり,それまでどのような画像をどう認識してきたかのTesseractの過去の経験が,
次に認識するときの認識精度に影響している。
(3)日本語の認識精度は不安定で変動する
最初は誤認識していた文字が,途中から正しく認識できるように変わる,
ということが頻繁に起きる。
私のパソコンではjpn_35MBを使った場合,「鯵」の字は単独では認識できないが,
「鯵」を含む数個の文字列,例えば,「鯵フライ」なら認識できるという,
不思議な現象が起きた。
つまり,
(a)1文字を認識(--psm 10)
(b)1行で3〜5文字を認識(--psm 7) ←これが最も認識精度が高いようだ
(c)1行で40文字以上を認識(--psm 7)
(d)複数行で100文字以上を認識(--psm 6)
たぶん,辞書を作成するときに,1文字ずつ学習させたのではなく,
1行かつ3文字以上の文字列で学習させたのだろう。
(4)9ptのサイズの文字を300dpiでスキャンすると,全角文字のサイズは
35ピクセル × 35ピクセル
くらいになる。
400dpiや600dpiでスキャンすると,全角文字のサイズをもっと大きくできるが,
そうしても認識精度は向上しない。
A5版書籍をスキャンするときは300dpiで十分。
A6版の文庫本をスキャンするときは600dpiが必要。
(5)オプションに dpi=300 を追加して実行しても認識精度は向上しない
・読取領域を指定するときに,上余白が大きすぎると,文字の一部を読み飛ばして
しまうことがある。
・コマンドの末尾に logfile を追加して実行すると,エラーが起きた場合は,
バッチファイルのあるフォルダに Tesseract.log が出力される。
しかし,出力内容が正しくない。
コマンドプロンプトで表示される出力内容と不一致になっている。
・Tesseractが出力するテキストファイルは,
文字コードUTF8で,
改行コードLf(0x0A)
段落読み取りの場合,全角文字の後にスペースが追加される。
逆単一引用符Chr$(&H60),Chr$(12)など,ShiftJISでは使わない文字も出力される。
ShiftJISのテキストファイルにするときは,文字コード,改行コードを変換し,
全角文字直後のスペースを削除し,ShiftJISでは使わない文字は削除/変換する必要がある。
■結論
・英文,横書き日本語の文字認識
TessToolも併用すればTesseractは十分実用レベルにある
・縦書き日本語の文字認識
横書き日本語の認識に比べると,誤認識文字が多い。
それでも,全面的に手作業で入力するよりは,
TessTool併用でTesseractを使う方が,楽にテキストファイルを作成できる
(終わり) ページの先頭へ
|