JAVA——Tess4J简单的图像识别DEMO
基本概念
Tesseract Open Source OCR Engine :包含一個OCR引擎?-?libtesseract和一個命令行程序?-?tesseract。Tesseract 4添加了一個新的基于LSTM的OCR引擎,該引擎專注于行識別,但仍支持Tesseract 3的傳統Tesseract OCR引擎,該引擎通過識別字符模式進行工作。通過使用傳統OCR引擎模式(--oem 0),可以與Tesseract 3兼容。它還需要訓練有素的數據文件來支持舊式引擎,例如tessdata存儲庫中的文件。
Tess4J:Tesseract OCR API的?Java JNA包裝器。
Maven
<dependencies><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.4.0</version></dependency></dependencies>GitHub?
Tesseract Open Source OCR Engine :https://github.com/tesseract-ocr/tesseract
Tess4J項目:https://github.com/nguyenq/tess4j
語言庫:https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata
DEMO
1、首先創建一個新的maven項目,將所需jar包引入pom.xml
2、在任意地方創建一個文件夾tessdata,將下載的chi_sim.traineddata 和 eng.traineddata語言包存放在該目錄下,也可以直接存放到自己項目的resources/tessdata目錄下。
?
3、編寫代碼
// 識別圖片的路徑(修改為自己的圖片路徑)String path = "D:\\test.jpg";// 語言庫位置(修改為跟自己語言庫文件夾的路徑)String lagnguagePath = "D:\\tessdata";File file = new File(path);ITesseract instance = new Tesseract();//設置訓練庫的位置instance.setDatapath(lagnguagePath);//chi_sim :簡體中文, eng 根據需求選擇語言庫instance.setLanguage("eng");String result = null;try {long startTime = System.currentTimeMillis();result = instance.doOCR(file);long endTime = System.currentTimeMillis();System.out.println("Time is:" + (endTime - startTime) + " 毫秒");} catch (TesseractException e) {e.printStackTrace();}System.out.println("result: ");System.out.println(result);?
5、可選步驟:配置環境變量(TESSDATA_PREFIX)
環境變量地址指向你存放語言包的文件夾路徑,如:我的語言包路徑在 D:\tessdata
?
?
運行結果
以一張簡單的圖片為例:圖片放置在D:\test.png根目錄下,因此使用代碼測試前需要修改代碼中指定的兩個路徑!!!
識別圖片:
運行代碼后:
常見問題?
解決chi_sim.traineddata報read_params_file: parameter not found: allow_blob_division
Warning: Invalid resolution 0 dpi. Using 70 instead.
關于tesseract 出錯信息:read_params_file: Can't open chi_sim
擴展學習
提高識別率
1.對稱近鄰均值濾波
參考:
http://blog.csdn.net/fangbinwei93/article/details/50562449
2.指定config為digits,并修改tessdata\configs\digits文件,將白名單中設置需要識別的內容。如只需要識別數字,則指定whitelist為0123456789即可。
也可在程序中指定:
參考:
http://blog.csdn.net/hellousb2010/article/details/39477859
3.盡量指定圖像的一塊區域識別。比如驗證碼起始位置和結束位置很多空白的,可以去掉,只對驗證碼區域做識別。
4.訓練字庫,提升識別率
參考:
http://blog.csdn.net/white0blue/article/details/47972405
http://blog.csdn.net/tuling_research/article/details/41091163
其他參考
tesseract-ocr參數:http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version
參考文章
https://www.jianshu.com/p/ef60ef5395c5
https://www.cnblogs.com/asker009/p/11098220.html
https://blog.csdn.net/qincidong/article/details/82781361
https://blog.csdn.net/zai_xia/article/details/80003778
總結
以上是生活随笔為你收集整理的JAVA——Tess4J简单的图像识别DEMO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript——易班优课YOOC
- 下一篇: 联想拯救者Y7000系列笔记本电脑外接显