使用sourceforge中的javaocr框架。嘗試掃描圖像中的字母,並訓練系統識別它們。字母的OCR掃描。加載培訓信函失敗
加載教練時,遇到了這個異常:
java.io.IOException: Expected to decode 26 characters but actually decoded 33 characters in training: /Developer/MAckan/bin/LETTERS/trainLetters.PNG
at net.sourceforge.javaocr.ocrPlugins.mseOCR.TrainingImageLoader.load(TrainingImageLoader.java:111)
我的代碼是這樣的:
loader.load(this,ClassLoader.getSystemResource("LETTERS/trainLetters.PNG").getPath(), new CharacterRange('A', 'Z'), images);
的另一個問題是如何得到它培養的斯堪的納維亞字母。如果我輸入範圍A-Ö預計有150個字符。
後來,當我掃描我嘗試的時候掃描圖像中的行:
scanner.addTrainingImages(images);
final CharacterRange[] cr = new CharacterRange[1];
cr[0] = new CharacterRange('A', 'Z');
// get the first line of letters
final int x1 = 0;
final int y1 = 130;
final int x2 = 640;
final int y2 = 170;
for (int i = 0; i < 15; i++) {
final String text = scanner.scan(boardImage, x1, y1 + (i * 40), x2,
y2 + (i * 40), cr);
System.out.println("scanned " + text);
}
實際上我得到的輸出,但不是我期望的輸出... 任何人有與javaocr經驗框架?
更新: 解決了培訓問題。訓練圖像缺少一些字符,斯堪的納維亞語不支持(?)。仍然得到奇怪的輸出。
Update2: 解決整個問題,而不是寫我自己的比較。我對圖像進行了一些處理(減少了顏色和透明度)並逐個像素地進行比較,並對alafabet圖像返回了差異。最低差異「勝利」。適用於這種特殊情況,但我仍然對OCR運行感興趣。
謝謝。
/A
錯誤消息_「預期解碼26個字符,但實際上解碼訓練33個字符」 _似乎不言自明給我。您的輸入包含ASCII範圍「a-z」之外的字母,否? –
我設法獲得訓練圖像加載,沒有任何字符超出範圍,但錯過了一個。仍然給掃描輸出奇怪。第一行預計像「NOT」,但得到:「PIQIZ」。我需要更好的培訓信嗎?現在我正在使用日內瓦31字體在Gimp的白色背景上製作的字符A-Z。 –
好的,但現在你的問題已經改變了,對吧?既然你現在不使用'A-Z'外的字母,你沒有得到任何異常,對嗎? –