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