最近在做一個ocr的項目,主要是識別數字和英文字符,因此在嘗試現在開源的各種基於python語言(其實是想在pytorch框架下使用)的ocr庫
先附上測試圖片如上:
pip install easyocr
在大量warning後成功安裝了!!!
因為我主要是識別數字和英文字符,使用中文版本效果不佳,它的調用原理好像是easyocr.Reader()的第一個參數只會調用列表的第一個
,換成英文之後出錯率為1/14(僅用上圖衡量)
import easyocr
path='C:/Users/11027/Desktop/test1.jpg'
reader = easyocr.Reader(['en'],gpu = False)
result = reader.readtext(path)
print(result)
#22G1會識別成'2261'
輸出:
Using CPU. Note: This module is much faster with a GPU.
[([[307, 67], [349, 67], [349, 121], [307, 121]], '[0]', 0.2496181348819496), ([[82.817179374673, 18.268717498692013], [226.37590341350617, -1.1571357200124375], [232.182820625327, 75.73128250130799], [88.62409658649383, 95.15713572001243]], 'TBJU', 0.8707327246665955), ([[86.65181877371504, 84.3117294627456], [289.02336666519545, 60.9225513668679], [292.34818122628496, 138.6882705372544], [89.97663333480457, 162.0774486331321]], '004057', 0.9909699998969699), ([[88.96405360576286, 157.26340370189882], [224.4601580727819, 137.28127584248975], [231.03594639423716, 210.73659629810118], [96.5398419272181, 230.71872415751025]], '2261', 0.9822619656327679)]
為了不讓你們看的太辛苦,截了一個圖
先去下載安裝包
然後在終端
pip install pytesseract
給一張安裝完成的圖:
我的話一上來就報錯了。
沒有在路徑上檢查兩個點:
①環境路徑要增加兩個系統環境變量(說實話我也不確定是不是兩個都有用但是沒啥影響)
具體增加的變量要根據自己下載的位置。比如我下載的位置是D:\computervision\ocr\ocr_project\Tesseract-OCR。
第一個是新增的
第二個是加在path中
②修改pytesseract.py
這個也是看自己的設置,我是直接pip install pytesseract
在虛擬環境裡,所以它的位置就在D:\conda\envs\pytorch\Lib\site-packages\pytesseract
測試代碼
from PIL import Image
import pytesseract
path='C:/Users/11027/Desktop/test1.jpg'
text = pytesseract.image_to_string(path)
print(text)
大寄!啥也沒識別到(是有效的,但是好像對於英文字符和數字效果不行)
重新訓練的話太麻煩了先跳過了
下載的話:
pip3 install cnocr -i https://mirrors.aliyun.com/pypi/simple/
會有一堆warning,但是不影響!
然後對應不同的ocr任務有不同的方案,具體的話可以看官方的github
我用的是1.8M這個但是仍然是對比起其他開源的ocr庫效果最香
from cnocr import CnOcr
path='C:/Users/11027/Desktop/test1.jpg'
ocr = CnOcr(rec_model_name='en_number_mobile_v2.0')
out = ocr.ocr(path)
print(out)
# import testcnocr
# print(cnocr.__file__)
全部都能識別到!!!
其實我一開始也是報了一個錯的:太蠢了
錯因:我把測試文件命名為cnocr了
不得不說要不是paddleocr在paddle框架下,我覺得paddleocr整體效果是最好的,當然cnocr也不錯!