对William字典实施OCR的可行性试验

POJ的字母集比较独特,以至于没有一种较流行的西方语言的字母集能包含POJ的字母集,这使得默认的以西方语言为基础的OCR不能对POJ那些带diacritics的字母进行有效识别。因此我们需要定制自己的OCR。Tesseract OCR是HP在1995年以前开发的开源OCR,支持对新的字符集进行训练从而能支持新的语言。Tesseract OCR有一定的局限性,不过POJ的特点不会hit到这些限制。因此有可能用Tesseract OCR来对POJ进行有效识别。

Tesseract OCR的局限:
Tesseract can only handle left-to-right languages. While you can get something out with a right-to-left language, the output file will be ordered as if the text were left-to-right. Top-to-bottom languages will currently be hopeless.

Tesseract is unlikely to be able to handle connected scripts like Arabic. It will take some specialized algorithms to handle this case, and right now it doesn't have them.

Tesseract is likely to be so slow with large character set languages (like Chinese) that it is probably not going to be useful. There also still need to be some code changes to accommodate languages with more than 256 characters.
更多请参考:Training Tesseract

下面是我测试的结果:

1. 对William正文第2页的POJ字符(主要是带diacritic的)进行训练。
Capture.JPG

2. 将训练结果与原来Tesseract提供的英语训练结果合并,使得Tesseract可以识别不带diacritic的正常英语字符。

3. 对William正文第3页进行试识别。
Capture1.JPG

4. 识别结果:
aCC0l1I1t, siàu-ba̍k. boolc, siàu-phõu. to enter, chiēⁿ-siàu ; lh-
siàu ; kì-siàu. settle, hôiⁿ-siàu; siàu-ba̍k chheng-tshó. owe,
khiàm-siàu. square, ap-siàu . collect, thó-siàu. manage,
hūaⁿ-siàu. make up, su̍g—siàu. on account Q/1 in-ũi. on no
account, būan-būan put-khó; tùan-tùan m̄-hó. cannot a.
fcrr, put·kói; siⁿ-m̄-phùa; siⁿ-m̄-tshut.   an cwcmmt qf
any event, h pun·nng·thiaⁿ; Qiāng-nni-tàⁿ.
所训练的字符集:
字符        样本数
-        77
;        57
,        34
.        27
h        27
t        24
g        19
i        17
ⁿ        15
à        14
õ        13
a        12
ó        11
á        9
e        9
ē        9
k        9
m        9
ũ        9
â        8
c        8
ô        8
u        8
ú        8
ù        8
é        7
ō        7
s        7
a̍        6
ê        6
e̍        5
m̄        5
o̍        5
ā        4
ẽ        4
ī        4
o        4
ū        4
è        3
í        3
î        3
ⁿ        3
n        3
ò        3
p        3
û        3
i̍        2
ì        2
ĩ        2
j        2
ⁿ        2
n        2
n̂        2
ã        1
l        1
n        1
ń        1
u̍        1
ṳ̀        1
ṳ̄        1
我们可以看到,目前对POJ专用字符所训练的样本数是偏低的。Tesseract的建议对于常用字符,样本数最好达到10个以上,至于非常用的,最好也要5个以上。而现在里这个要求还差得比较远。不过我们还是可以看出,目前对POJ的识别效果还是比较可以的。但是对纯英语词汇的识别率偏低,比用Tesseract原配的英语库的识别效果要差很多。这也需要继续改进。

[ 本帖最後由 Bodhisatua 於 2009-11-27 23:55 編輯 ]
牛啊!这都能整出来!为何纯英文反而有问题呢?还有,假如是那种背景色灰暗的如Fielde字典,识别效果如何?
Tshṳ̂-pui Avalokiteśvara Phŏ-sat pó-hō tshuân-ke-nâng jît-jît phêng-an!
蹉跎莫遣韶光老 人生唯有讀書好 學須靜也  才須學也

--------------------------------------------
潮州话八调代表字:
1胎tho 2讨thó 3退thò 4托thoh
5逃tô 6在tŏ 7袋tō 8夺tôh
潮罗特殊变体:[ɯ]=ṳ=ur;[ã]=aⁿ=an;
[aʔ8]=âh=a̍h;[ts]=ts=ch;[tsʰ]=tsh=chh
不清楚,可能不同的训练集合并后会有一定的影响,没去看它具体的算法是怎样的。然后英语比较大的字体,还有斜体,都可能造成影响。

我在论坛上下载的Fielde是白底黑字的阿,清晰度也还可以,不过印刷也不是特别丰满,有些字符断开成两半,会影响质量。

另外Fielde的排版是分两部分的,Tesseract目前好像不支持这种排版。我想到的解决方法是先把页面切成两部分再去识别。此外那些繁体,甚至是异体的中文,可能只能用手工输入。

[ 本帖最後由 Bodhisatua 於 2009-11-28 09:41 編輯 ]
Fielde是白底的?我的是黄底的啊……和Williams明显不同。

打印出来的Fielde那黄底就变灰底了。
Tshṳ̂-pui Avalokiteśvara Phŏ-sat pó-hō tshuân-ke-nâng jît-jît phêng-an!
蹉跎莫遣韶光老 人生唯有讀書好 學須靜也  才須學也

--------------------------------------------
潮州话八调代表字:
1胎tho 2讨thó 3退thò 4托thoh
5逃tô 6在tŏ 7袋tō 8夺tôh
潮罗特殊变体:[ɯ]=ṳ=ur;[ã]=aⁿ=an;
[aʔ8]=âh=a̍h;[ts]=ts=ch;[tsʰ]=tsh=chh
你指A pronouncing and defining dictonary那本?白底的,论坛下载。

原数据缺失

William字典论坛上的那个版本正文的第144,145页缺失,另外有近十页的左下角被不透明层覆盖(见下图),这也造成数据缺失或者无法自动识别。
Capture.JPG
那本不是自w起便缺少至z的嗎?
哦,对哦,我正奇怪为什么到w就没有了。
我忘了我以前看得那本有没有,也可能也是这一本。

回復 #8 Bodhisatua 的帖子

完整版本archives上有。
本帖隐藏的内容需要积分高于 100 才可浏览
Tshṳ̂-pui Avalokiteśvara Phŏ-sat pó-hō tshuân-ke-nâng jît-jît phêng-an!
蹉跎莫遣韶光老 人生唯有讀書好 學須靜也  才須學也

--------------------------------------------
潮州话八调代表字:
1胎tho 2讨thó 3退thò 4托thoh
5逃tô 6在tŏ 7袋tō 8夺tôh
潮罗特殊变体:[ɯ]=ṳ=ur;[ã]=aⁿ=an;
[aʔ8]=âh=a̍h;[ts]=ts=ch;[tsʰ]=tsh=chh

回復 #9 輶轩使者 的帖子

原来这里有Full Text版,估计google就是用tesseract识别的,序言纯英文的准确率相当高。但是后面的poj就是一坨XX……