支持40種語言的圖片文字識別(OCR)項目

Hi!你們好呀!我是大家努力的喵哥!javascript

OCR(光學字符識別)是咱們平常很經常使用的人工智能技術。咱們總會有從圖片中提取文字的需求。你是否是有須要從圖片複製文字的經歷?手打是最低效的選擇。咱們可使用 OCR 軟件,直接將圖片上的符號轉化爲對應的文字。java

那麼,這裏喵哥就要給你們推薦一個開源項目 EasyOCR。EasyOCR 並非能夠直接使用的軟件(雖然它有一個演示網站),而是一個超級易於使用的 OCR 開源工具庫。三行代碼,就能夠實現一個 OCR 功能。EasyOCR 支持40多種語言,包括英文,中文,日文,韓文和泰文等。nginx

若是你只是想簡簡單單的使用 OCR 工具。喵哥仍是推薦你,使用國內比較成熟的商業項目。這些商業項目,還能完整的貼合你的使用場景。好比,掃描全能王就很是好用。其識別的準確度、速度都無可挑剔。以外,喵哥還要推薦另外一款 OCR 軟件白描。除了識別準確度和速度外,白描更是一款 UI 異常精緻的產品。git

EasyOCR 是基於人工智能實現的文字識別。圖片檢測部分是使用的是開源項目 CRAFT-pytorch 及其論文中的 CRAFT算法。識別模型爲 CRNN。CRNN 由3個主要組成部分組成:特徵提取、序列標記和解碼。github





安裝


安裝使用pip以得到穩定的版本。算法

pip install easyocr

對於最新的開發版本。shell

pip install git+git://github.com/jaidedai/easyocr.git

注意:對於Windows,請先按照https://pytorch.org上的官方說明安裝Torch和Torchvision。json

使用數組

import easyocrreader = easyocr.Reader(['ch_sim','en'])reader.readtext('chinese.jpg')

輸出將採用列表格式,每一個項目分別表示邊界框,文本和置信度。微信

[([[[ 18975 ],[ 46975 ],[ 469165 ],[ 189165 ]],'愚園路',0.3754989504814148), ([[ 8680 ],[ 13480 ],[ 134128 ],[ 86128 ]],'西',0.40452659130096436), ([[[ 51781 ],[ 56581 ],[ 565123 ],[ 517123 ]],'東',0.9989598989486694), ([[[ 78126 ],[ 136126 ],[ 136156 ],[ 78156 ]],' 315 ',0.8125889301300049), ([[[ 514126 ],[ 574126 ],[ 574156 ],[ 514156 ]],' 309 ',0.4971577227115631), ([[[ 226170 ],[ 414170 ],[ 414220 ],[ 226220 ]],「豫園路」,0.8261902332305908), ([[[ 79173 ],[125173],[ 125213 ],[ 79213 ]],' W ',0.9848111271858215), ([[[ 529173 ],[ 569173 ],[ 569213 ],[ 529213 ]],' E ',0.8405593633651733)]

注意1:['ch_sim','en']是您要閱讀的語言列表。您能夠一次傳遞幾種語言,但並不是全部語言均可以一塊兒使用。英語與每種語言兼容。共享公共字符的語言一般相互兼容。

注意2:除了filepath chinese.jpg,您還能夠將OpenCV圖像對象(numpy數組)或圖像文件做爲字節傳遞。原始圖像的URL也能夠接受。

您也能夠將detail= 0 設置爲更簡單的輸出。

reader.readtext('chinese.jpg', detail = 0)

結果:

[ '愚園路''西''東'' 315 '' 309 ''豫園路。'' W '' E ' ]

所選語言的型號權重將自動下載,或者您能夠從如下連接手動下載並將其放在'〜/ .EasyOCR / model'文件夾中。

若是您沒有GPU或GPU的內存不足,則能夠經過添加gpu = False在CPU模式下運行它。

reader = easyocr.Reader(['th','en'], gpu = False)

詳細的說明,能夠參考官方文檔。

在命令行上運行

$ easyocr -l ch_sim zh -f chinese.jpg --detail = 1 --gpu = True





最後


EasyOCR 目前支持如下48種語言。

南非語(af),阿塞拜疆語(az),波斯尼亞語(bs),簡體中文(ch_sim),繁體中文(ch_tra),捷克語(cs),威爾士語(cy),丹麥語(da),德語(de),英語(en) ),西班牙語(es),愛沙尼亞語(et),法語(fr),愛爾蘭語(ga),印地語(hi),克羅地亞語(hr),匈牙利語(hu),印度尼西亞語(id),冰島語(is),意大利語(it ),日語(ja),韓語(ko),庫爾德語(ku),拉丁語(la),立陶宛語(lt),拉脫維亞語(lv),毛利人(mi),馬拉地語(mr),馬來語(ms),馬耳他語(mt ),尼泊爾文(ne),荷蘭文(nl),挪威文(no),奧克西唐(oc),波蘭文(pl),葡萄牙文(pt),羅馬尼亞文(ro),塞爾維亞文(latin)(rs_latin),斯洛伐克文(sk)(須要從新訪問),斯洛文尼亞語(sl),阿爾巴尼亞語(sq),瑞典語(sv),斯瓦希里語(sw),泰語(th),他加祿語(tl),土耳其語(tr),烏茲別克(uz),越南語(vi)(須要再次訪問)

字符列表位於項目文件夾 easyocr / character中 。

EasyOCR項目制定了一個大概的路線圖。

第一階段(如今-2020年10月)

1. 語言包:印地語,阿拉伯語,西裏爾字母等。旨在覆蓋全球80%至90%以上的人口。同時改善現有語言。

2. 更好的文檔和API。

3. 語言模型可實現更好的解碼。

第二階段(2020年10月以後)

1. 手寫支持:網絡體系結構應該可有可無。關鍵是使用GAN生成逼真的手寫數據集。

2. 更快的處理時間:模型修剪(精簡版)/量化/導出到其餘平臺(ONNX?)。

3. 開放數據集和模型訓練管道。

4. 重組代碼以支持可交換的檢測和識別算法。API應該相似以下。

reader = easyocr.Reader(['en'], detection='DB', recognition = 'ReXNet_LSTM_Attention')

EasyOCR 項目的做者是組織 aided AI 。aided AI 的宗旨是給世界展現 AI 的價值。EasyOCR 共有50位貢獻者,在 Github 共收穫了6.5k Star。

項目地址https://github.com/JaidedAI/EasyOCR



往期精彩內容

一套絕佳的圖標字體庫和 CSS 框架

推薦一款網絡超級加速神器

入坑股市必備的數據利器

一個更好用的性能測試框架

5秒克隆語音,我也能用周杰倫的聲音唱歌了

推薦!時間管理大師的開源選擇

...


關注Github喵,回覆「進階」,

領取喵哥推薦的技術進階知識大禮包!!!

掃描二維碼

獲取更多內容

Github喵



本文分享自微信公衆號 - Github喵(gh_acfcf1689379)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索