1. 程式人生 > >java 使用tess4J(Tesseract-OCR)進行圖片文字識別

java 使用tess4J(Tesseract-OCR)進行圖片文字識別

java中識別文字使用的軟體是tesseractocr(使用的版本是3.02,3以後的版本才支援中文),這個軟體需要安裝在本地電腦中,安裝的過程中全部都按照預設進行安裝(以便於Java直接呼叫)

中文訓練庫下載地址 

該軟體預設的識別的是英文,如果相要能識別中文,需要將中文的訓練文字chi_sim.traineddata存放到C:\Program Files (x86)\Tesseract-OCR\tessdata中,其中該中文訓練文字解壓後39M左右,遺憾的是如果想要識別中英文的話,還得繼續谷歌搜尋一下,在這裡就不列出來了。 
如果想要識別中英文混合的話,參考—基於百度API圖片文字識別:

package com.sinosoft.yjcz.util.readImage;
import net.sourceforge.tess4j.Tesseract;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;


/**
 *  ZQQ on 2018/6/26.
 */
@SuppressWarnings("all")
public class OCR {
    /**
     *
     * @param srImage 圖片路徑
     * @param ZH_CN 是否使用中文訓練庫,true-是
     * @return 識別結果
     */
    public static String FindOCR(String srImage, boolean ZH_CN) {
        try {
            System.out.println("start");
            double start=System.currentTimeMillis();
            File imageFile = new File(srImage);
            if (!imageFile.exists()) {
                return "圖片不存在";
            }
            BufferedImage textImage = ImageIO.read(imageFile);
            Tesseract instance=Tesseract.getInstance();
            instance.setDatapath("C:\\Program Files (x86)\\Tesseract-OCR\\tessdata");//設定訓練庫
            if (ZH_CN)
                instance.setLanguage("chi_sim");//中文識別
            String result = null;
            result = instance.doOCR(textImage);
            double end=System.currentTimeMillis();
            System.out.println("耗時"+(end-start)/1000+" s");
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return "發生未知錯誤";
        }
    }

}

異常 處理
1. Exception in thread “main” java.lang.Error: Invalid memory access 
這個異常表示沒有設定訓練庫的位置 
2. 不是有效的win32程式 
嘗試重新安裝一下tesseractocr 
安裝的路徑預設就可以了。 
3. Exception in thread “main” java.lang.UnsupportedClassVersionError: net/sourceforge/tess4j/Tesseract : 
發生該異常的原因是JDK版本低於1.7,使用1.7以上即可解決問題。 
其他: 
1. 提高識別率:使用百度開發者平臺提供的API 


http://blog.csdn.net/wsk1103/article/details/79316220