使用Tesseract OCR Engine識別圖片文字

目前有不少OCR工具或者類庫都提供了準確率挺高的PDF和圖片識別功能。在爬蟲應用中,時常須要識別驗證碼或者目標站點處於數據保護而使用圖片來替代直接的文本。除了直接的軟件和類庫外,還有一些在線工具能夠直接識別,使用free online ocrGooglr能夠搜索到下面這幾個:app

http://www.onlineocr.net/maven

http://www.free-ocr.com/工具

http://www.ocrconvert.com/測試

https://www.newocr.com/.net

衆多的工具中,有個wiki頁面作了比較詳細的比較:圖片

使用Tesseract OCR Engine識別圖片文字

 

詳細內容請參考Comparison_of_optical_character_recognition_software。字符串

在衆多軟件中,Google出品的Tesseract口碑不錯,有些人認爲是全部OCR軟件中準確率最高的,甚至比一些商業軟件還高。Google的論文中給出了以下的準確度:get

使用Tesseract OCR Engine識別圖片文字

 

Tesseract是C/C++寫的庫,可是不少語言都有相應的包裝器(wrapper),具體請參考Tesseract的Github。it

下面咱們以Java的包裝器tess4j爲例說明:io

首先添加maven依賴:

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

而後寫個測試類:

public static void main(String[] args) {
 File imageFile = new File("F:/air-img/full/71-arrival.jpg");
 ITesseract instance = new Tesseract(); // JNA Interface Mapping
 // ITesseract instance = new Tesseract1(); // JNA Direct Mapping
 instance.setDatapath("C:/tess4j-3.2.0/tessdata");
 try {
 String result = instance.doOCR(imageFile);
 System.out.println(result);
 } catch (TesseractException e) {
 System.err.println(e.getMessage());
 }
}

須要設置一下Tessaract的模型數據的目錄:

instance.setDatapath("C:/tess4j-3.2.0/tessdata");

模型數據能夠從官網中下載到。識別的結果以字符串形式輸出,看看效果。

關於Tesseract的調優,參考ImproveQuality。

若是想本身訓練模型,參考TrainingTesseract。

能夠加一下854630135這個羣去交流一下噢  

相關文章
相關標籤/搜索