㈠ java 怎麼調用tess4j
網上傳的代碼示例大多是在Windows下安裝Tesseract ORC後通過CMD命令操作進行圖識別操作.而 Tess4j 針對Tesseract 提供了JNI支持,同時還提供了一些圖片操作的工具類,提供比如圖片放大,旋轉,黑白處理,銳化 等用來提高識別率的操作.操作十分方便. Tess4j 簡單到超乎想像,只是自己在使用環境比較特殊,遇到很多問題,這里一一道來.
1 依賴包.
tess4j.jar Tess4j的本尊,用於Tesseract 的JNA支持,並提供相關操作工具類
jna.jar 看到Tesseract 的第一反應是要用cmd或JNI來操作它,了解了一下 Tess4j 使用的JNA,有點JNI高級版的感覺,CMD什麼的,玩蛋蛋去吧.
jai_imageio.jar 圖片操作的工具類,支持Tiff就靠它了. 它的 META-INF 里有文章,這個後面詳說.
還有其它幾個包,是用於操作PDF用的吧,沒有引用,也沒有發生錯誤.所以的包可以在 Tess4j 的文件目錄裡面找到.
2 操作代碼.
官方的示例中給出了一個超級簡單有效的示例,不足20行代碼!!!我和小夥伴們都被震驚了!!!關鍵代碼如下:
Java代碼 收藏代碼
File imageFile = new File("eurotext.tif");
Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping
String result = instance.doOCR(imageFile);
實際使用中為了提高識別率還要對圖片作一些處理來提高識別率,使用Tess4j 自帶的工具類即可完成,這樣識別率就大大的提高了.( 這里無法解決 驗證碼 中干擾線問題,干擾線的清理,網上有其它方式處理 )
Java代碼 收藏代碼
// 這里對圖片黑白處理,增強識別率.這里先通過截圖,截取圖片中需要識別的部分
BufferedImage textImage = ImageHelper.convertImageToGrayscale(ImageHelper.getSubImage(panel.image, startX, startY, endX, endY));
// 圖片銳化,自己使用中影響識別率的主要因素是針式列印機字跡不連貫,所以銳化反而降低識別率
// textImage = ImageHelper.convertImageToBinary(textImage);
// 圖片放大5倍,增強識別率(很多圖片本身無法識別,放大5倍時就可以輕易識,但是考濾到客戶電腦配置低,針式列印機列印不連貫的問題,這里就放大5倍)
textImage = ImageHelper.getScaledInstance(textImage, endX * 5, endY * 5);
3 使用中遇到的問題
3.1 相關DLL文件,相關字型檔文件
liblept168.dll,libtesseract302.dll 其中 liblept168.dll 要先載入.
tessdata 存放的是字型檔文件,如果需要數字,英文以外的支持需要 Tesseract 頁面下載相關字型檔.
因為公司使用時是將文件打成Jar布署,然後提供客戶端下載,所以就把以上兩個文件一起打進tess4j.jar裡面,然後客戶端使用時 tessdata 直接可用,而 liblept168.dll,libtesseract302.dll 需要釋放到臨時目錄然後載入.相關代碼:
最近要用java實現一個驗證碼識別系統,選了半天之後最終決定用Tesseract-OCR作為識別引擎。既然是java+Tesseract-OCR,自然就首選Tess4J。由於Tess4J直接且僅提供了編譯成dll的3.02版本的Tesseract-OCR,而我的最終目標Linux下使用且想自己更換T...
㈢ java截圖後怎麼用tesseract 文字識別
網上傳的代碼示例大多是在Windows下安裝Tesseract ORC後通過CMD命令操作進行圖識別操作.而 Tess4j 針對Tesseract 提供了JNI支持專,同時還提供了一些圖片屬操作的工具類,提供比如圖片放大,旋轉,黑白處理,銳化 等用來提高識別率的操作.操作十分方便. T