您好,登錄后才能下訂單哦!
這篇文章主要介紹“java怎么使用tess4j進行圖片文字識別功能”,在日常操作中,相信很多人在java怎么使用tess4j進行圖片文字識別功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java怎么使用tess4j進行圖片文字識別功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Tess4J 是Java (JNA) 對 Tesseract OCR API 的封裝。
很久之前需要做一個自動登陸并對網頁上的未處理的數據進行按鈕點擊,其中需要登陸的驗證碼校驗,因此用了一下Tess4J,能識別一些簡單的文字和數字等,識別率好像一般,但出錯了就重新換一個驗證碼再試,多試幾次也能成功。現將之前的簡單使用過程記錄,備查。
Tess4J
是對Tesseract OCR API
的Java JNA
封裝。使java能夠通過調用Tess4J
的API來使用Tesseract OCR
。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF
。這個開始接觸的時候,我對這兩個東西還搞混淆了。明確說一下,Tess4J
是java直接可使用的jar包,而Tesseract OCR
是支持Tess4J
進文件文字識別的基礎,Tess4J
可直接使用Maven
方式引入。
<!-- tess4j start --> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>5.6.0</version> </dependency> <!-- tess4j end -->
需要提前下載好相關的語言庫文件,這里我下了chi_sim.traineddata和eng.traineddata兩個
下載地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
下載好后放在代碼里面的目錄下
準備好兩張圖片放置在代碼的資源目錄下,方便程序讀取,
圖片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"; /** * 設置目錄datapath the tessdata path to set * 否則會報Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.錯誤 */ instance.setDatapath(dataPath); //instance.setLanguage("eng");//默認,可以不寫 instance.setLanguage("chi_sim");//設置中文識別 String imageName = "verifyCode.png"; try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) { BufferedImage bImage = ImageIO.read(inStream); //doOCR也可以傳參為File,我這里傳的BufferedImage String result = instance.doOCR(bImage); //識別的結果回來可能會帶回車,處理掉 result = result.replaceAll("\n", ""); log.info("圖片名:" + imageName +" 識別結果:"+ 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); //識別的結果回來可能會帶回車,處理掉 result = result.replaceAll("\n", ""); log.info("圖片名:" + imageName +" 識別結果:"+ result); } catch (IOException e) { log.error(e.getMessage(),e); } catch (TesseractException e) { log.error(e.getMessage(),e); } //Tesseract的代碼結束--------------------->>>> log.info("ocrTest success. spend time :{} ms.", (System.currentTimeMillis() - startMs)); } }
測試結果截圖如:
英文識別出來比較正常,中文識別出來帶了空格,如果需要可以通過代碼進一步去掉空格,至此,tess4j的簡單使用測試完成。
到此,關于“java怎么使用tess4j進行圖片文字識別功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。