參考資料:
安裝包下載地址:https://blog.csdn.net/qq_43317529/article/details/83340739
語言包下載地址: https://blog.csdn.net/SpuerCheng/article/details/79323620
環境變量配置: https://blog.csdn.net/p312011150/article/details/82624567
jTessBoxEditor下載地址: https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
訓練過程參考地址:
https://www.cnblogs.com/wangkevin5626/p/9640165.html
https://www.cnblogs.com/zgq123456/p/9804000.html
https://blog.csdn.net/sylsjane/article/details/83751297
https://www.cnblogs.com/wj-1314/p/9454656.html
資料下載路徑:
鏈接:https://pan.baidu.com/s/1ttCDK5SQAYNNSnbJZLph7Q
提取碼:ogg7
1. tesseract-ocr安裝地址:
2. 環境變量配置:
3. 測試tesseract-ocr安裝是否成功
打開cmd,切換到圖片所在目錄,執行如圖所示代碼:
4. 下載語言包,拷貝到如圖所示位置:
5. 語言訓練過程,先下載jTessBoxEditor工具,直接解壓縮即可使用:
此處我把他解壓在瞭如圖所示路徑下:
雙擊如圖所示jar文件,出現圖示彈窗,即安裝成功:
6. 開始訓練
a.找幾張圖片轉換成tiff或者tif類型
b.點擊tools工具選擇merge:
b.選中tif文件點擊打開
c. 添加文件名num.font.exp0.tif,點擊保存,即可看到在tif文件目錄下生成了一份行的tif文件如圖所示:
d.拷貝新生成的num.font.exp0.tif到一個路徑下準備進行矯正訓練,此處我是直接放在ocr下自己新建了一個tif文件夾如圖所示:
e. 生成BOX文件
打開命令行並切換至num.font.exp0.tif所在目錄,輸入,生成文件名爲num.font.exp0.box
tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
【語法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
lang爲語言名稱,fontname爲字體名稱,num爲序號;在tesseract中,一定要注意格式。
生成的文件如圖所示:
定義字符配置文件
在目標文件夾內生成一個名爲font_properties的文本文件,內容爲
font 0 0 0 0 0
【語法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname爲字體名稱,italic爲斜體,bold爲黑體字,fixed爲默認字體,serif爲襯線字體,fraktur德文黑字體,1和0代表有和無,精細區分時可使用。
字符矯正
打開jTessBoxEditor,BOX Editor -> Open,打開num.font.exp0.tif;矯正<Char>上的字符,記得<Page>有好多頁噢!
修改完成後點擊保存。
f. 自己寫一個批處理文件,此處我寫的是num.bat,雙擊執行,可以看到生成一些文件,如圖示:
rem 執行改批處理前先要目錄下創建font_properties文件
echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
echo Clustering..
cntraining.exe num.font.exp0.tr
echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable
echo Create Tessdata..
combine_tessdata.exe num.
echo. & pause
g. 拷貝此語言包到ocr路徑下:
h.打開cmd,執行命令,查看識別結果:
至此一個完整的訓練過程結束。
7. 通過java代碼執行cmd命令,進行調用工具,生成識別結果:
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 參考地址:https://blog.csdn.net/fangquan1980/article/details/80296002
* @author edz
*
*/
public class test {
/**
* java執行cmd命令
* 可以使用 && 來連接兩條命令,示例: String cmd = “cmd /c D: && cd D:\\img && dir /b”;
*/
public static void main(String[] args) {
/**
* 操作過程:切換到待識別圖片所在目錄c盤的test目錄下,執行ocr命令,識別圖片內容保存到4.txt文件中
*/
// Java調用 dos命令,跳轉到c:test目錄下,執行 tesseract 1.png 4 -l chi_sim命令
String cmd = "cmd /c c: && cd /test && tesseract 1.png 4 -l num";
try {
Process process = Runtime.getRuntime().exec(cmd);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String content = br.readLine();
while (content != null) {
System.out.println(content);
content = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ocr簡單學習過程結束。