JAVA——Tess4J简单的图像识别DEMO
基本概念
Tesseract Open Source OCR Engine :包含一個(gè)OCR引擎?-?libtesseract和一個(gè)命令行程序?-?tesseract。Tesseract 4添加了一個(gè)新的基于LSTM的OCR引擎,該引擎專注于行識(shí)別,但仍支持Tesseract 3的傳統(tǒng)Tesseract OCR引擎,該引擎通過(guò)識(shí)別字符模式進(jìn)行工作。通過(guò)使用傳統(tǒng)OCR引擎模式(--oem 0),可以與Tesseract 3兼容。它還需要訓(xùn)練有素的數(shù)據(jù)文件來(lái)支持舊式引擎,例如tessdata存儲(chǔ)庫(kù)中的文件。
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項(xiàng)目:https://github.com/nguyenq/tess4j
語(yǔ)言庫(kù):https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata
DEMO
1、首先創(chuàng)建一個(gè)新的maven項(xiàng)目,將所需jar包引入pom.xml
2、在任意地方創(chuàng)建一個(gè)文件夾tessdata,將下載的chi_sim.traineddata 和 eng.traineddata語(yǔ)言包存放在該目錄下,也可以直接存放到自己項(xiàng)目的resources/tessdata目錄下。
?
3、編寫代碼
// 識(shí)別圖片的路徑(修改為自己的圖片路徑)String path = "D:\\test.jpg";// 語(yǔ)言庫(kù)位置(修改為跟自己語(yǔ)言庫(kù)文件夾的路徑)String lagnguagePath = "D:\\tessdata";File file = new File(path);ITesseract instance = new Tesseract();//設(shè)置訓(xùn)練庫(kù)的位置instance.setDatapath(lagnguagePath);//chi_sim :簡(jiǎn)體中文, eng 根據(jù)需求選擇語(yǔ)言庫(kù)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、可選步驟:配置環(huán)境變量(TESSDATA_PREFIX)
環(huán)境變量地址指向你存放語(yǔ)言包的文件夾路徑,如:我的語(yǔ)言包路徑在 D:\tessdata
?
?
運(yùn)行結(jié)果
以一張簡(jiǎn)單的圖片為例:圖片放置在D:\test.png根目錄下,因此使用代碼測(cè)試前需要修改代碼中指定的兩個(gè)路徑!!!
識(shí)別圖片:
運(yùn)行代碼后:
常見問(wèn)題?
解決chi_sim.traineddata報(bào)read_params_file: parameter not found: allow_blob_division
Warning: Invalid resolution 0 dpi. Using 70 instead.
關(guān)于tesseract 出錯(cuò)信息:read_params_file: Can't open chi_sim
擴(kuò)展學(xué)習(xí)
提高識(shí)別率
1.對(duì)稱近鄰均值濾波
參考:
http://blog.csdn.net/fangbinwei93/article/details/50562449
2.指定config為digits,并修改tessdata\configs\digits文件,將白名單中設(shè)置需要識(shí)別的內(nèi)容。如只需要識(shí)別數(shù)字,則指定whitelist為0123456789即可。
也可在程序中指定:
參考:
http://blog.csdn.net/hellousb2010/article/details/39477859
3.盡量指定圖像的一塊區(qū)域識(shí)別。比如驗(yàn)證碼起始位置和結(jié)束位置很多空白的,可以去掉,只對(duì)驗(yàn)證碼區(qū)域做識(shí)別。
4.訓(xùn)練字庫(kù),提升識(shí)別率
參考:
http://blog.csdn.net/white0blue/article/details/47972405
http://blog.csdn.net/tuling_research/article/details/41091163
其他參考
tesseract-ocr參數(shù):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
總結(jié)
以上是生活随笔為你收集整理的JAVA——Tess4J简单的图像识别DEMO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript——易班优课YOOC
- 下一篇: 联想拯救者Y7000系列笔记本电脑外接显