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')
輸出將採用列表格式,每一個項目分別表示邊界框,文本和置信度。微信
[([[[ 189,75 ],[ 469,75 ],[ 469,165 ],[ 189,165 ]],'愚園路',0.3754989504814148), ([[ 86,80 ],[ 134,80 ],[ 134,128 ],[ 86,128 ]],'西',0.40452659130096436), ([[[ 517,81 ],[ 565,81 ],[ 565,123 ],[ 517,123 ]],'東',0.9989598989486694), ([[[ 78,126 ],[ 136,126 ],[ 136,156 ],[ 78,156 ]],' 315 ',0.8125889301300049), ([[[ 514,126 ],[ 574,126 ],[ 574,156 ],[ 514,156 ]],' 309 ',0.4971577227115631), ([[[ 226,170 ],[ 414、170 ],[ 414、220 ],[ 226、220 ]],「豫園路」,0.8261902332305908), ([[[ 79,173 ],[125,173],[ 125,213 ],[ 79,213 ]],' W ',0.9848111271858215), ([[[ 529,173 ],[ 569,173 ],[ 569,213 ],[ 529,213 ]],' 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
往期精彩內容:
...
關注Github喵,回覆「進階」,
領取喵哥推薦的技術進階知識大禮包!!!
掃描二維碼
獲取更多內容
Github喵


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