日本語練習虫

旧はてなダイアリー「日本語練習中」〈http://d.hatena.ne.jp/uakira/〉のデータを引き継ぎ、書き足しています。

Tesseract-OCRの日本語調教(3)

Tesseract-OCRの日本語調教(2)に記した、横組みの「〘迭〙〖謬〗⦅柾侭⦆」という画像で調教したTesseract-OCRで、同じ文字列を縦組みにした画像を読ませるとどうなるか。というのをやってみた。
当該文字列しか教えていないTesseractでは、「侭迭柾 侭謬〙 侭柾侭謬」という結果になった。実は横組みの画像を読ませると、「〘迭〙 〖謬〗 ⦅柾侭⦆」という完璧な回答となる。
ちなみに、デフォルトの「jpn.traineddata」で横組み画像をOCR認識させようとすると、「正送国 匠謹] ((不正イ尽))」のようになった*1。「柾」が「不正」、「侭」が「イ尽」になるあたりの素直さが、文字一覧から察せられた予想通りすぎて愛おしい。



実は、横組みの画像で調教した場合に縦組みの括弧が認識できないという結果は、ドキュメントページにある「Adapting the Tesseract Open Source OCR Engine for Multilingual OCR」というテキストから予想した通りの結果である。
Tesseractは、縦組みのテキストを「1行1文字の横組み」のように扱うことでグリフイメージの照合=OCR認識を実行しているようなのだ。
次のような「左から右に行が進む、1行1文字の縦組み」画像によって調教すると、普通に縦に組んだ「〘迭〙〖謬〗⦅柾侭⦆」の画像を読み込ませても、「〘迭〙 〖謬〗 ⦅柾侭⦆」という完璧な回答となる。



同じひとつのキャラクタが、縦組み時と横組み時で異なる「正立(upright)グリフ」で表現される場合があるぞ――というのはUTR #50Unicode Vertical Text Layout」のテーマでもあり、特に括弧類の多くはCJK共通の課題であろう。
少なくともCJKの調教時に「組方向中立」「縦組みグリフ」「横組みグリフ」のフラグをつけることができるよう、本家に注文を出しておきたい(が、英語で十分に意図を伝える能力が無いのが悔しいところ)。

短文の画像を使って調教していく過程で、boxデータをテキストエディタ修正するのは予想以上に手間がかかる上に微妙な間違いの元になるので、当面はアドオン紹介ページにあるboxエディタを使うことにする(残念ながら、完成度が相当高そうな「jTessBoxEditor」は、Windowsインストーラー版が巧く機能しなかった)。

*1:実際の認識データは「半角」丸括弧が2つ連続するのだが「はてな記法」との衝突を避けるため「全角」丸括弧に改めた。