Java使用tess4J進行OCR圖像識別


簡介

OCR (Optical Character Recognition,光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程;即,針對印刷體字符,采用光學的方式將紙質文檔中的文字轉換成為黑白點陣的圖像文件,並通過識別軟件將圖像中的文字轉換成文本格式,供文字處理軟件進一步編輯加工的技術。如何除錯或利用輔助信息提高識別正確率,是OCR最重要的課題,ICR(Intelligent Character Recognition)的名詞也因此而產生。衡量一個OCR系統性能好壞的主要指標有:拒識率、誤識率、識別速度、用戶界面的友好性,產品的穩定性,易用性及可行性等。

Tess4J是對Tesseract OCR API.的Java JNA 封裝。使java能夠通過調用Tess4J的API來使用Tesseract OCR。支持的格式:TIFF,JPEG,GIF,PNG,BMP,JPEG,and PDF

Tesseract 的github地址:https://github.com/tesseract-ocr/tesseract
Tess4J的github地址:https://github.com/nguyenq/tess4j

Tess4J API 提供的功能:

  1. 直接識別支持的文件
  2. 識別圖片流
  3. 識別圖片的某塊區域
  4. 將識別結果保存為 TEXT/ HOCR/ PDF/ UNLV/ BOX
  5. 通過設置取詞的等級,提取識別出來的文字
  6. 獲得每一個識別區域的具體坐標范圍
  7. 調整傾斜的圖片
  8. 裁剪圖片
  9. 調整圖片分辨率
  10. 從粘貼板獲得圖像
  11. 克隆一個圖像(目的:創建一份一模一樣的圖片,與原圖在操作修改上,不相 互影響)
  12. 圖片轉換為二進制、黑白圖像、灰度圖像
  13. 反轉圖片顏色

創建maven項目

pom中引用jar包

     <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>4.5.1</version>
        </dependency>

下載語言庫文件

語言庫下載地址:https://github.com/tesseract-ocr/tessdata

其中chi_sim.traineddata為中文語言庫,eng.traineddata為英文語言庫。

在任意地方創建一個文件夾tessdata,將下載的chi_sim.traineddata 和 eng.traineddata語言包存放在該目錄下,也可以直接存放到自己項目的resources/tessdata目錄下。

PS:后期的OCR樣本訓練,實際上就是制作生成自己的語言庫文件

代碼示例

// 識別圖片的路徑(修改為自己的圖片路徑)
        String path = "D:\\test.png";
        File file = new File(path);

        ITesseract instance = new Tesseract();
        //獲得Tesseract的文字庫,設置語言庫位置
        URL tessdataPath = ClassLoader.getSystemResource("tessdata");
        instance.setDatapath(tessdataPath.getPath().substring(1));
        //chi_sim :簡體中文, eng:英文    根據需求選擇語言庫
        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);

測試圖片:

 結果:

 

 

 

 

 

參考:

Java使用Tess4J 實現簡單的圖像識別(Maven版)

JAVA使用Tess4J進行ocr識別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM