java ocr tesseract, (支持tif,jpg,png,pdf等)


之前在對tif做ocr的時候,在網上找了很多資源,最后選擇了tesseract。

關於tesseract相信大多數人找到了資料無非兩種,我來一一闡述一下用后的感受。

1.使用tess4j,在實測中發現這種封裝后的效果極差,稍微復雜一點的文檔識別出來的精度慘不忍睹。所以推薦以下一種方式。

2.安裝tesseract原版客戶端,使用java中的ProcessBuilder運行。

網上找出來的資源多是3個類,一個OCR,一個OCR2,一個ImageIOHelper,在使用中發現了實在實際上只OCR了tif中的第一個圖片,如果tif有多張那么后面都被略過。

於是我把代碼研究了后,發現在ImageIOHelper中的這一行代碼出了問題

            BufferedImage bi = reader.read(0);  
            IIOImage image = new IIOImage(bi,null,reader.getImageMetadata(0));  
            tempFile = tempImageFile(imageFile);  
            ios = ImageIO.createImageOutputStream(tempFile);  
            writer.setOutput(ios);  
            writer.write(streamMetadata, image, tiffWriteParam);  

BufferedImage bi 只是reader.read的第一張圖,並沒有把剩余的圖片進行讀取。

在修改的過程中我又想,又為什么要把原來的文檔轉成imageFile呢,tesseract客戶端不是可以直接讀取源文件?難道是轉成imageFile后精度會變高,最后我試了一下,發現轉沒轉結果都沒有發生改變

最后我整理了一下代碼,以下是完整的教程。

1.安裝tesseract ,我是用的是5.0,將tessdata.zip中的內容覆蓋到安裝目錄的tessdata文件夾下

2.記得看下環境變量下是否有這兩台

一丶安裝路徑path

二丶TESSDATA_PREFIX變量

3.測試OCR.java 完成

tesseract安裝包及tessdata壓縮包,和java文件的網盤地址:

鏈接: https://pan.baidu.com/s/1UchatLQm2WRBksKTd1aK3w 提取碼: 14hc 


免責聲明!

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



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