1. 程式人生 > 實用技巧 >這款Python庫4行程式碼提取圖片中的文字

這款Python庫4行程式碼提取圖片中的文字

OCR是什麼?

有一款軟體叫掃描全能王,想必一些小夥伴聽過,這是一個OCR整合軟體,可以將影象內容掃描成文字。

所以說,OCR作用是對文字資料的影象檔案進行分析識別處理,獲取文字及版面資訊。

OCR的全稱叫作“Optical Character Recognition”,即光學字元識別。

這算是生活裡最常見、最有用的AI應用技術之一。

細心觀察便可發現,身邊到處都是OCR的身影,文件掃描、車牌識別、證件識別、銀行卡識別、票據識別等等。

OCR本質是影象識別,其包含兩大關鍵技術:文字檢測和文字識別。

先將影象中的特徵的提取並檢測目標區域,之後對目標區域的的字元進行分割和分類。

關於EasyOCR

Python中有一個不錯的OCR庫-EasyOCR,在GitHub已有9700star。它可以在python中呼叫,用來識別影象中的文字,並輸出為文字。

https://github.com/JaidedAI/EasyOCR

EasyOCR支援超過80種語言的識別,包括英語、中文(簡繁)、阿拉伯文、日文等,並且該庫在不斷更新中,未來會支援更多的語言。

安裝EasyOCR

安裝過程比較簡單,使用pip或者conda安裝。

pip install easyocr

如果用的PyPl源,安裝起來可能會耽誤些時間,建議大家用清華源安裝,幾十秒就能安裝好。

使用方法

EasyOCR的用法非常簡單,分為三步:

  • 1.建立識別物件;
  • 2.讀取並識別影象;
  • 3.匯出文字。

我們先來舉個簡單的例子。

找一張路標圖片,儲存到電腦:

接著擼程式碼:

# 匯入easyocrimport easyocr# 建立reader物件reader = easyocr.Reader(['ch_sim','en']) # 讀取影象result = reader.readtext('test.jpg')# 結果result

輸出結果:

可以看到路標上的三個路名以及拼音都識別出來了!

識別的結果包含在元組裡,元組由三部分組成:邊框座標、文字、識別概率。

「關於語言:」

這段程式碼有一段引數['ch_sim','en'],這是要識別的語言列表,因為路牌裡有中文和英文,所以列表裡添加了ch_sim(簡體中文)、en(英文)。

可以一次傳遞多種語言,但並非所有語言都可以一起使用。英語與每種語言相容,共享公共字元的語言通常相互相容。

前文我們給出了EasyOCR支援的語言列表,並附有引數代號。

「關於影象檔案:」

上面傳入了相對路徑'test.jpg',還可以傳遞OpenCV影象物件(numpy陣列)、影象位元組檔案、影象URL。

再讀取一張文字較多的新聞稿圖片:

# 匯入easyocrimport easyocr# 建立reader物件reader = easyocr.Reader(['ch_sim','en']) # 讀取影象result = reader.readtext('test1.jpg')# 結果result

識別文字的準確率還是很高的,接下來對文字部分進行抽取。

for i in result:    word = i[1]    print(word)

輸出:

小結

該開源庫是作者研究了幾篇論文,復現出來的成果,真是一位實幹家。

檢測部分使用了CRAFT演算法,識別模型為CRNN,它由3個主要元件組成:特徵提取,序列標記(LSTM)和解碼(CTC)。整個深度學習過程基於Pytorch實現。

作者一直在完善EasyOCR,後續計劃一方面擴充套件支援更多的語言,爭取覆蓋全球80%~90%的人口;另一方面支援手寫識別,並提高處理速度。