python圖片文字識別?
共 1578字,需瀏覽 4分鐘
·
2022-02-09 17:37
Python有很多圖片文字識別包,這里給大家推薦一個開源利器-EasyOCR
首先我們要知道OCR是什么?
有一款軟件叫掃描全能王,想必一些小伙伴聽過,這是一個OCR集成軟件,可以將圖像內(nèi)容掃描成文字。
所以說,OCR作用是對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息。
OCR的全稱叫作“Optical Character Recognition”,即光學字符識別。
這算是生活里最常見、最有用的AI應用技術之一。
細心觀察便可發(fā)現(xiàn),身邊到處都是OCR的身影,文檔掃描、車牌識別、證件識別、銀行卡識別、票據(jù)識別等等。
OCR本質(zhì)是圖像識別,其包含兩大關鍵技術:文本檢測和文字識別。
先將圖像中的特征的提取并檢測目標區(qū)域,之后對目標區(qū)域的的字符進行分割和分類。
關于EasyOCR
Python中有一個不錯的OCR庫-EasyOCR,在GitHub已有9700star。它可以在python中調(diào)用,用來識別圖像中的文字,并輸出為文本。
https://github.com/JaidedAI/EasyOCR
EasyOCR支持超過80種語言的識別,包括英語、中文(簡繁)、阿拉伯文、日文等,并且該庫在不斷更新中,未來會支持更多的語言。
安裝EasyOCR
安裝過程比較簡單,使用pip或者conda安裝。
pip install easyocr如果用的PyPl源,安裝起來可能會耽誤些時間,建議大家用清華源安裝,幾十秒就能安裝好。
使用EasyOCR需要會python,知道如何編寫簡單的腳本,并使用第三方庫進行編程。
使用方法
EasyOCR的用法非常簡單,分為三步:
- 1.創(chuàng)建識別對象;
- 2.讀取并識別圖像;
- 3.導出文本。
我們先來舉個簡單的例子。
找一張路標圖片,保存到電腦:
接著擼代碼:
# 導入easyocr
import easyocr
# 創(chuàng)建reader對象
reader = easyocr.Reader(['ch_sim','en'])
# 讀取圖像
result = reader.readtext('test.jpg')
# 結果
result輸出結果:
可以看到路標上的三個路名以及拼音都識別出來了!
識別的結果包含在元組里,元組由三部分組成:邊框坐標、文本、識別概率。
關于語言:
這段代碼有一段參數(shù)['ch_sim','en'],這是要識別的語言列表,因為路牌里有中文和英文,所以列表里添加了ch_sim(簡體中文)、en(英文)。
可以一次傳遞多種語言,但并非所有語言都可以一起使用。英語與每種語言兼容,共享公共字符的語言通常相互兼容。
前文我們給出了EasyOCR支持的語言列表,并附有參數(shù)代號。
關于圖像文件:
上面?zhèn)魅肓讼鄬β窂?test.jpg',還可以傳遞OpenCV圖像對象(numpy數(shù)組)、圖像字節(jié)文件、圖像URL。
再讀取一張文字較多的新聞稿圖片:
# 導入easyocr
import easyocr
# 創(chuàng)建reader對象
reader = easyocr.Reader(['ch_sim','en'])
# 讀取圖像
result = reader.readtext('test1.jpg')
# 結果
result識別文字的準確率還是很高的,接下來對文字部分進行抽取。
for i in result:
word = i[1]
print(word)輸出:
小結
該開源庫是作者研究了幾篇論文,復現(xiàn)出來的成果,真是一位實干家。
檢測部分使用了CRAFT算法,識別模型為CRNN,它由3個主要組件組成:特征提取,序列標記(LSTM)和解碼(CTC)。整個深度學習過程基于Pytorch實現(xiàn)。
作者一直在完善EasyOCR,后續(xù)計劃一方面擴展支持更多的語言,爭取覆蓋全球80%~90%的人口;另一方面支持手寫識別,并提高處理速度。
