tesseract5.0 圖片訓練模型實戰


最近接了個活,有大批的圖片需要文字識別

圖片參考

 

是印刷字體打印后再掃描的圖片,看到這種任務,首先想到的是用tesseract進行識別,印刷字體識別率很高

拿出工具進行識別分析,效果感人,5段文字,有3段都有識別錯的,2和Z,3和S

進過多個圖片測試,基本不可用,識別錯的太多了

 

 

 對接百度通用識別,使用高精度版,准確率基本100%,不過百度賬戶有數量限制,客戶有幾千上萬的圖像需要識別,這個方式行不通,畢竟能免費為啥要付錢呢

免費測試網址:https://cloud.baidu.com/product/ocr/general

通過資料查閱,發現可以對某一類圖片進行訓練,即可大幅提升識別准確率

訓練過程參考:

https://www.cnblogs.com/cnlian/p/5765871.html

雖然這個教程是3.0的,但是5.0一樣訓練,不影響流程

通過選取40個圖片為訓練樣本,合並成一個tif,生成box文件,然后使用jTessBoxEditor修正錯誤,然后訓練出模型文件

使用新的模型文件進行識別,果然識別率大幅上升,測試准確度有99.9%,大批量測試速度也很快,1秒100張的速度

 

 

 ==================================================================================

 ==================================================================================

這邊分享一些中間遇到的坑和經驗:

1.32位模型和64位模型不通用,而且32位訓練我這邊出問題直接訓練不成功

2.提示無法讀取box:APPLY_BOXES: boxfile line 3/G ((80,0),(80,0)): FAILURE! Couldn't find a matching blob

  這種錯誤大概率是訓練圖片太臟引起的,

  如下左邊這種圖片就不行,需要使用opencv進行二值化處理,白底黑字,參照右圖

 

 

3.如果百度識別效果還可以,建議使用百度識別修改文件名,這樣大幅減少人工識別糾正的工作量

4.建議使用opencv進行處理,尋找輪廓,自己生成box文件,讀取文件名來匹配每個輪廓的文字內容,這樣可以極大的減少工作量

  (jTessBoxEditor太難用了, 坐標得手動改,文字也要一個個改,不能放大,你要是改個100個,估計得崩潰)

  

  box文件,格式為【文字內容,p1, p2, p3, p4, 圖片序號】

   

#opencv的rect轉換為box文件格式坐標
def get_tesseract_box(x, y, w, h, height):
    p1 = x
    p4 = height - y
    p2 = p4 - h
    p3 = x + w
    return [p1, p2, p3, p4]

 height為圖像高度

5.如果需要訓練的樣本比較多,建議首先使用小批量的圖片訓練出一個模型,然后使用這個模型來識別,作為原始圖片名,可以大幅減少工作量

 


免責聲明!

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



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