java使用tess4j進(jìn)行圖片文字識別功能
java使用tess4j進(jìn)行圖片文字識別
一、簡介
Tess4J 是Java (JNA) 對 Tesseract OCR API 的封裝。
很久之前需要做一個(gè)自動(dòng)登陸并對網(wǎng)頁上的未處理的數(shù)據(jù)進(jìn)行按鈕點(diǎn)擊,其中需要登陸的驗(yàn)證碼校驗(yàn),因此用了一下Tess4J,能識別一些簡單的文字和數(shù)字等,識別率好像一般,但出錯(cuò)了就重新?lián)Q一個(gè)驗(yàn)證碼再試,多試幾次也能成功?,F(xiàn)將之前的簡單使用過程記錄,備查。
Tess4J
是對Tesseract OCR API
的Java JNA
封裝。使java能夠通過調(diào)用Tess4J
的API來使用Tesseract OCR
。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF
。這個(gè)開始接觸的時(shí)候,我對這兩個(gè)東西還搞混淆了。明確說一下,Tess4J
是java直接可使用的jar包,而Tesseract OCR
是支持Tess4J
進(jìn)文件文字識別的基礎(chǔ),Tess4J
可直接使用Maven
方式引入。
tesseract:https://tesseract-ocr.github.io/
官網(wǎng):http://tess4j.sourceforge.net/codesample.html
語言庫:
https://github.com/tesseract-ocr/tessdata
https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
二、使用過程
1.maven依賴引入pom.xml
<!-- tess4j start --> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>5.6.0</version> </dependency> <!-- tess4j end -->
2.準(zhǔn)備好tessdata目錄下的語言庫文件
需要提前下載好相關(guān)的語言庫文件,這里我下了chi_sim.traineddata和eng.traineddata兩個(gè)
下載地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
下載好后放在代碼里面的目錄下
3.寫測試代碼進(jìn)行測試
準(zhǔn)備好兩張圖片放置在代碼的資源目錄下,方便程序讀取,
圖片1
圖片2
兩張圖片放在資源目錄下
代碼如下:
package cn.ljhua; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import lombok.extern.slf4j.Slf4j; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; /** * Tess4jOcr測試示例 * @author liujh */ @Slf4j public class Tess4jOcrTest { public static void main(String[] args) { Tess4jOcrTest test = new Tess4jOcrTest(); test.ocrTest(); } public void ocrTest() { log.info("ocrTest start...."); long startMs = System.currentTimeMillis(); //Tesseract的代碼開始---------------------->>>> ITesseract instance = new Tesseract(); /** * 組裝接好tessdata目錄的路徑字符串 */ String filePathPre = System.getProperty("user.dir"); String dataPath = filePathPre + File.separator + "tessdata"; /** * 設(shè)置目錄datapath the tessdata path to set * 否則會報(bào)Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.錯(cuò)誤 */ instance.setDatapath(dataPath); //instance.setLanguage("eng");//默認(rèn),可以不寫 instance.setLanguage("chi_sim");//設(shè)置中文識別 String imageName = "verifyCode.png"; try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) { BufferedImage bImage = ImageIO.read(inStream); //doOCR也可以傳參為File,我這里傳的BufferedImage String result = instance.doOCR(bImage); //識別的結(jié)果回來可能會帶回車,處理掉 result = result.replaceAll("\n", ""); log.info("圖片名:" + imageName +" 識別結(jié)果:"+ result); } catch (IOException e) { log.error(e.getMessage(),e); } catch (TesseractException e) { log.error(e.getMessage(),e); } imageName = "vCode2.jpg"; try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) { BufferedImage bImage = ImageIO.read(inStream); //doOCR也可以傳參為File,我這里傳的BufferedImage String result = instance.doOCR(bImage); //識別的結(jié)果回來可能會帶回車,處理掉 result = result.replaceAll("\n", ""); log.info("圖片名:" + imageName +" 識別結(jié)果:"+ result); } catch (IOException e) { log.error(e.getMessage(),e); } catch (TesseractException e) { log.error(e.getMessage(),e); } //Tesseract的代碼結(jié)束--------------------->>>> log.info("ocrTest success. spend time :{} ms.", (System.currentTimeMillis() - startMs)); } }
測試結(jié)果截圖如:
英文識別出來比較正常,中文識別出來帶了空格,如果需要可以通過代碼進(jìn)一步去掉空格,至此,tess4j的簡單使用測試完成。
三、源碼下載地址
最后提供源碼如下:
github: https://github.com/jxlhljh/tess4jOcrTest
gitee: https://gitee.com/jxlhljh/tess4jOcrTest
到此這篇關(guān)于java使用tess4j進(jìn)行圖片文字識別的文章就介紹到這了,更多相關(guān)java圖片文字識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MybatisPlus使用Wrapper實(shí)現(xiàn)條件查詢功能
這篇文章主要介紹了MybatisPlus使用Wrapper實(shí)現(xiàn)查詢功能,使用它可以實(shí)現(xiàn)很多復(fù)雜的查詢,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06springboot 多模塊將dao(mybatis)項(xiàng)目拆分出去
這篇文章主要介紹了springboot 多模塊將dao(mybatis)項(xiàng)目拆分出去,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05深入Spring Boot實(shí)現(xiàn)對Fat Jar jsp的支持
這篇文章主要介紹了深入Spring Boot實(shí)現(xiàn)對Fat Jar jsp的支持,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Sa-Token記住我模式實(shí)現(xiàn)七天免登錄
這篇文章主要為大家介紹了Sa-Token記住我模式實(shí)現(xiàn)七天免登錄示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07