前言:
OCR文字識別在目前有著比較好的應用,也出現了很多的文字識別軟體,但軟體是面向使用者的。對於我們技術人員來說,有時難免需要在計算機視覺任務中加入文字識別,如車牌號識別,票據識別等,因此軟體對我們是沒用的,我們需要自己實現文字識別。
在文字識別方面,主要有兩款主流的開源框架Tesseract和EasyOCR。本文討論了 Tesseract 和 EasyOCR 使用 Python API 之間的主要區別,包括安裝、使用示例、準確率和推理速度方面的對比。
使用示例
Tesseract
安裝: pip install pytesseract pillow
使用示例:
from PIL import Image import pytesseract text=pytesseract.image_to_string(Image.open(filename)) print(text) |
這只是一個簡單的使用示例,在實際應用中,影像並非理想情況,還需要對影像進行一定的預處理以更好地識別。如去除椒鹽噪聲,去除干擾物,如在車牌識別中還會利用矩形框檢測框出車牌所在位置,並放大,以更好地進行車牌號識別。
EasyOCR
安裝:pip install easyocr
使用示例
import easyocr reader = easyocr.Reader(['ch_sim', 'en']) text = reader.readtext('filename') print(text) |
注:easyocr還會輸出文字在圖片中的座標。
準確率
在參考連結[2]中進行了一項實驗,使用1000張含字母的圖片和1000張含數字的圖片分別使用Tesseract和EasyOCR進行測試。
含字母的輸入影像如下圖所示:
含數字的輸入影像如下圖所示:
經過測試得出下面兩個開源框架的準確率對比
此外,它們在識別某些字元時存在完全不同的問題。例如,Tesseract 傾向於將諸如 29977.23 之類的東西識別為 2997.23,或者將carrier 識別為 cartier。另一方面,EasyOCR 更有可能將 94268.1 識別為 94268,或者advances 識別為 atvances。這兩個單詞識別的舉例表明這兩個框架對單個字母的識別傾向。
推理速度
在速度方面,Tesseract 在 CPU 上的表現優於 EasyOCR,而 EasyOCR 在 GPU 上的表現更好。
結論
Tesseract 在字母識別方面表現更好,而 EasyOCR 在數字方面表現更好。如果圖片包含大量字母,可以考慮 Tesseract。此外,EasyOCR 的輸出是小寫的。如果大寫對處理很重要,還應該使用 Tesseract。另一方面,如果圖片中包含大量數字,建議 EasyOCR。
參考連結
https://blog.csdn.net/fatesunlove/article/details/107691665
https://medium.com/swlh/ocr-engine-comparison-tesseract-vs-easyocr-729be893d3ae
在公眾號中回覆關鍵字 “技術總結” 可獲取以下文章的彙總pdf。
其它文章