基於Python的OCR圖像識別

前言

由於目前做的項目裏面有些地方的需要用到圖像文字識別,因此在此總結下,以下方法適合新手

1、使用python的pytesseract庫

主要是安裝庫,比較簡單,直接使用 pip install 安裝即可;另外,如果進行中文識別,需要下載語言包,並配置好相應環境,具體操作可以進行百度,教程有不少。因爲這個識別方法比較簡單(但效果並不是很理想),

(1)Tesseract的安裝及配置

Tesseract的安裝我們可以移步到該網址 https://digi.bib.uni-mannheim.de/tesseract/,裏面有很多版本供大家選擇,其中w32表示32位系統,w64表示64位系統,大家可以根據自己的需求選擇。

下載完成後,安裝我們需要知道我們安裝的位置,將安裝目錄配置到系統path變量當中,例如路徑是D:\Tesseract-OCR

我們右擊我的電腦/此電腦->屬性->高級系統設置->環境變量->Path->編輯->新建然後將我們的路徑複製進去即可。添加好系統變量後後我們還需要依次點確定

(2)下載語言包

Tesseract默認是不支持中文的,如果想要識別中文或者其它語言需要下載相應的語言包

下載地址如下: https://tesseract-ocr.github.io/tessdoc/Data-Files 

其中有兩個中文語言包,一個Chinese-Simplified和Chinese-Traditional,它們分別是簡體中文和繁體中文,我們選擇需要的下載即可。下載完成後我們需要放到Tesseract的路徑下的tessdata目錄下,例如D:\Tesseract-OCR\tessdata。

(3)其它模塊下載

除了上面的步驟,我們還需要下載兩個模塊:

pip install pytesseract
pip install pillow

下面直接貼出測試代碼:

import pytesseract
from PIL import Image
# 讀取圖片
im = Image.open('img11.png')
# 識別文字,並指定語言
string = pytesseract.image_to_string(im, lang='chi_sim')
print(string)

因爲默認是支持英文的,設置lang='chi_sim',是把語言設置爲簡體中文,這種效果不是很好,適合那種簡單的識別。

2、調用百度AI平臺接口

調用百度AI平臺接口會有調用次數限制,通用50000次/天,但學習完全夠用

這個類似於調用接口實現詞法分析等操作,首先通過註冊獲得APP_ID、API_KEY、SECRET_KEY,然後調用接口實現OCR。由於是在線API,如果圖片體積比較大,涉及到上傳數據、分析數據、返回數據等一系列操作,需要一定的時間。此外,因爲返回的是 dict 類型數據,所以需要對結果進行處理(這套算法是按行識別文字的,準確率較高,基本可以直接將結果進行提取和拼接)。實現起來比較簡單,下面直接貼出代碼:

from aip import AipOcr
APP_ID = '00000000'
API_KEY = '00000000000000000000'
SECRET_KEY = '00000000000000000000'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
 
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
 
def image2text(fileName):
    image = get_file_content(fileName)
    dic_result = client.basicGeneral(image)
    res = dic_result['words_result']
    result = ''
    for m in res:
        result = result + str(m['words'])
    return result
 
getresult = image2text('./test01.jpg')
print(getresult)

現在工作中調用的是鵝廠內部自己開發的OCR識別系統,識別場景和準確率確實高很多,下一步也該想想提高準確率,畢竟這兩個是別人開發調用的,最好是自己訓練模型~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章