java語言下利用tess4j開源庫實現圖片識別功能
阿新 • • 發佈:2019-01-13
一,tess4j 簡單介紹
Tess4J是對tesseract -OCR API.的Java JNA 封裝,使java能夠通過呼叫Tess4J的API來使用tesseract -OCR
我有一篇部落格也介紹了tesseract -OCR如何使用tesseract -OCR進行圖片識別
java程式碼實現DOS命令使用tesseract -OCR開源引擎實現圖片文字識別
二,tess4j環境準備
官網下載tess4j的jar包 https://sourceforge.net/projects/tess4j 解壓之後目錄結構如下,tess4j的iar包在dist目錄裡面
如果要進行中文字元識別,需要下載中文字型檔,可自行百度,我也提供了百度網盤連結https://pan.baidu.com/s/1dmpqQ8Cm7Cd5zaLC0ZOZaw
三,Eclipse IDE下的程式碼實現
1. 新建一個java專案
2.匯入tess4j的lib資料夾下的全部jar包,注意,lib下有一個字尾為.properties的檔案別導進去了,把那個刪除掉就行,你或許會問會用到那麼多jar包嗎,因為jar包可能依賴於其他iar包,所以最好全匯入進去,我遇到過一個錯誤 java.lang.NoClassDefFoundError com/sun/jna/pointer
3.將tess4j解壓目錄下的tessdata 資料夾複製到已建立的java專案根目錄下(便於專案釋出和可移植性,並且等會要進行字型檔引用),並把中文字型檔放進這個資料夾(如果要進行中文字元識別)
4.新建Tess4jHelper類
package ocr; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import net.sourceforge.tess4j.Tesseract; public class Tess4jHelper { /** * 圖片識別(一張) * * @param imgPath * @param ZH_CN * 是否使用中文訓練庫,true-是 * @return 識別結果 */ public String recognizing(String imgPath, boolean ZH_CN) { try { File imageFile = new File(imgPath); // 建立一個圖片檔案 if (!imageFile.exists()) { // 如果圖片不存在,給出提示並返回 return "圖片不存在"; } BufferedImage textImage = ImageIO.read(imageFile); // 將圖片載入到記憶體 Tesseract instance = new Tesseract(); // 建立Tesseract物件 instance.setDatapath(System.getProperty("user.dir") + "tessdata");// 設定訓練庫路徑 if (ZH_CN) // instance.setLanguage("chi_sim");// 匯入中文識別字庫 String recognizeResult = null; // 定義變數,接收識別結果 recognizeResult = instance.doOCR(textImage);// 呼叫識別方法,得到識別結果 return recognizeResult; // 返回識別結果 } catch (Exception e) { e.printStackTrace(); return "tess4j識別圖片時出錯!該圖片路徑為" + imgPath; } } public static void main(String[] args) { Tess4jHelper tess4jHelper = new Tess4jHelper(); String imgPath = "D:\\images\\test2.png"; String result = tess4jHelper.recognizing(imgPath, true);//中文識別用true 英文識別用false System.out.println(result); } }
5.中文識別對比
英文識別對比