程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

在window10下python:ocr實戰

編輯:Python

前言

最近在做一個ocr的項目,主要是識別數字和英文字符,因此在嘗試現在開源的各種基於python語言(其實是想在pytorch框架下使用)的ocr庫

先附上測試圖片如上:

easyocr

 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)]

為了不讓你們看的太辛苦,截了一個圖

pytesseract

先去下載安裝包
然後在終端

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)

大寄!啥也沒識別到(是有效的,但是好像對於英文字符和數字效果不行)

重新訓練的話太麻煩了先跳過了

cnocr

下載的話:

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

不得不說要不是paddleocr在paddle框架下,我覺得paddleocr整體效果是最好的,當然cnocr也不錯!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved