導讀
圖像識別領域有幾個最熱門的方向,其中就包含了OCR(Optical Character Recognition,光學字符識別),百度、阿里、騰訊都有自己的OCR收費服務。隨著目前數據量越來越大,以及硬件性能的提升,OCR的應用也越來越成熟,像身份證識別、火車票識別、發票識別、出租票識別等等。相信大家也體驗過一些,今天給大家介紹一個好用的開源OCR應用EasyOCR,而且還包含多種語言,識別效果也還不錯,目前在git上已有8K顆星
git地址:https://github.com/JaidedAI/EasyOCR
EasyOCR
- 介紹
EasyOCR目前能夠支持58種語言,其中有中文(簡體和繁體)、日語、泰語、韓語等,支持的語言列表如下

EasyOCR支持的語言類型
- 模型架構

EasyOCR的模型主要分為兩個,基于CRAFT的文字檢測模型和基于ResNet+LSTM+CTC的識別模型
- demo
官方也提供了一些效果實例,如下,對于這種比較標準的印刷文字以及路牌識別效果還是不錯的

第三方基于easyOCR提供了幾個demo地址,大家可以試試自己的數據看看效果:
- https://colab.fan/easyocr
- https://hub.Docker.com/r/challisa/easyocr
- https://easyocrgpu-wook-2.endpoint.ainize.ai/
我利用第三個接口(第一個接口無法訪問,docker還沒測試),我從網頁上隨便截取了一段文字來測試一下,效果如下

文字基本上能識別出來,不過標點符號的識別不是那么的準確,我在自己的電腦上按照git上配置了一下環境,識別效果要比上面好不少,效果如下

順便測試了一下火車票的識別效果


火車票的識別效果還是要差一些,估計是訓練的時候缺少這樣的數據
EasyOCR的安裝
EasyOCR依賴pytorch的環境,需要先安裝pytorch,這個安裝教程大家參考torch的官方安裝教程,在安裝好torch之后大家就可以通過pip直接來安裝EasyOCR
- pip安裝
pip install easyocr
- git安裝最新版本
pip install git+git://github.com/jaidedai/easyocr.git
- 模型準備
在安裝完之后,需要先下載好預訓練模型,模型下載地址請參考git,下載好模型之后,將模型拷貝到~/.EasyOCR/model目錄下,如果找不到路徑請自行創建目錄或者執行下面的語句(執行之后會自動創建目錄),測試代碼如下
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
print(result)
- 不足之處
經過測試,目前開源的模型在非印刷文字,例如火車票、發票、身份證等識別效果不是很理想,估計主要還是缺少這方面的訓練數據導致的,基于CRAFT的文字檢測模型對于曲線文字(例如印章等)的檢測效果很差。