摘要:一個簡單的圖片轉(zhuǎn)文字的函數(shù)實現(xiàn)如下。百度云這是偶然的發(fā)現(xiàn),百度云提供了一定額度的免費(fèi)的,目前是每日次,做做研究或者小應(yīng)用還勉強(qiáng)夠用,本文主要為了測試其效果。論中文,還是百度比谷歌更懂一點(diǎn)。
當(dāng)今時代人工智能都已經(jīng)是爛大街的詞了,OCR應(yīng)該也很多人都知道。
OCR (Optical Character Recognition,光學(xué)字符識別)是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機(jī)文字的過程。
本文主要記錄了通過Python使用OCR的兩次嘗試。
TesseractTesseract,一款由HP實驗室開發(fā)由Google維護(hù)的開源OCR(Optical Character Recognition , 光學(xué)字符識別)引擎,特點(diǎn)是開源,免費(fèi),支持多語言,多平臺。
項目地址:https://github.com/tesseract-...
安裝使用Tesseract的安裝比較簡單,在mac可以通過brew安裝。
brew install --with-training-tools tesseract
在windows可以通過exe安裝包安裝,下載地址可以從GitHub項目中的wiki找到。安裝完成后記得將Tesseract 執(zhí)行文件的目錄加入到PATH中,方便后續(xù)調(diào)用。
另外,默認(rèn)安裝會包含英文語言訓(xùn)練包,如果需要支持簡體中文或者繁體中文,需要在安裝時勾選。
或者安裝結(jié)束后到項目地址下載:https://github.com/tesseract-...
下載好的語言包放入到安裝目錄中的testdata下即可。在windows系統(tǒng)你還需要將testdata目錄也加入環(huán)境變量。
TESSDATA_PREFIX=C:Program Files (x86)Tesseract-OCR essdata
如果一切就緒,你在命令行中就可以使用Tesseract命令。
# tesseract Usage: tesseract --help | --help-psm | --help-oem | --version tesseract --list-langs [--tessdata-dir PATH] tesseract --print-parameters [options...] [configfile...] tesseract imagename|stdin outputbase|stdout [options...] [configfile...] OCR options: --tessdata-dir PATH Specify the location of tessdata path. --user-words PATH Specify the location of user words file. --user-patterns PATH Specify the location of user patterns file. -l LANG[+LANG] Specify language(s) used for OCR. -c VAR=VALUE Set value for config variables. Multiple -c arguments are allowed. --psm NUM Specify page segmentation mode. --oem NUM Specify OCR Engine mode. NOTE: These options must occur before any configfile.
通過命令行你就可以完成簡單的圖片文字識別任務(wù)。
tesseract test.png outfile -l chi_sim通過Python調(diào)用
Tesseract安裝完成后可以很方便的被Python調(diào)用,你需要安裝兩個包。
pip install pillow pip install pytesseract
一個簡單的圖片轉(zhuǎn)文字的函數(shù)實現(xiàn)如下。
from PIL import Image import pytesseract class Languages: CHS = "chi_sim" CHT = "chi_tra" ENG = "eng" def img_to_str(image_path, lang=Languages.ENG): return pytesseract.image_to_string(Image.open(image_path), lang) print(img_to_str("image/test1.png", lang=Languages.CHS)) print(img_to_str("image/test2.png", lang=Languages.CHS))
測試圖片- test1.png:
識別結(jié)果:
process image file "image/test1.png" in 1.4782530478747697 seconds 8 所 調(diào) 人 , 在 - 方 。 深 從 久 , 定 中 央 。 所 澈 伊 人 , 圭 水 淳 。 淇 渡 從 之 , 定 圭 北 中 坂 。 。 所 澈 伊人 , 圭 水 浩 從 丿 , 定 圭 水 中 瀝 。
測試圖片 - test2.png
識別結(jié)果:
process image file "image/test2.png" in 1.2131140296607923 seconds 清 明 時 節(jié) 雨 紛 紛 , 路 上 行 人 欲 斷 魂 信 問 酒 家 何 處 有 , 牧 奕 通 指 槍 花 村 。小結(jié)
Tesseract在識別清晰的標(biāo)準(zhǔn)中文字體效果還行,稍微復(fù)雜的情況就很糟糕,而且花費(fèi)的時間也很多,我個人覺得唯一的優(yōu)點(diǎn)就是免費(fèi)了。如果你不介意多花時間,可以考慮使用它提供的訓(xùn)練功能自定義你的語言庫,那樣在特定場景下識別率應(yīng)該能上一個臺階。
百度云OCR這是偶然的發(fā)現(xiàn),百度云提供了一定額度的免費(fèi)的OCR API,目前是每日500次,做做研究或者小應(yīng)用還勉強(qiáng)夠用,本文主要為了測試其效果。
文檔地址:https://cloud.baidu.com/doc/O...
安裝使用首先你需要注冊一個百度云BCE賬號,然后從控制面板新建一個文字識別應(yīng)用。
之后你就可以獲得調(diào)用API需要的 AppID,API Key 和 Secret Key。后面只要根據(jù)官方文檔一步一步走就可以了。
pip install baidu-aip封裝和調(diào)用
參考文檔: https://cloud.baidu.com/doc/O...
from aip import AipOcr config = { "appId": "your-id", "apiKey": "your-key", "secretKey": "your-secret-key" } client = AipOcr(**config) def get_file_content(file): with open(file, "rb") as fp: return fp.read() def img_to_str(image_path): image = get_file_content(image_path) result = client.basicGeneral(image) if "words_result" in result: return " ".join([w["words"] for w in result["words_result"]])
測試圖片- test1.png:
識別結(jié)果:
process image file "image/test1.png" in 0.6331169034812572 seconds 蒹葭 先秦:佚名 蒹葭蒼蒼,白露為霜。所謂伊人,在水一方。 溯洄從之,道阻且長。溯游從之,宛在水中央。 蒹葭萋萋,白露未晞。所謂伊人,在水之湄。 溯洄從之,道陽且躋。溯游從之,宛在水中坻。 蒹葭采采,白露未已。所謂伊人,在水之涘。 溯洄從之,道阻且右。溯游從之,宛在水中沚。
測試圖片 - test2.png
識別結(jié)果:
process image file "image/test2.png" in 0.6621812639450142 seconds 清明時節(jié)雨紛紛,路上行人欲斷魂。 借問酒家何處有,牧童遙指杏花村。小結(jié)
測試結(jié)果很明顯,我只能說百度云這個OCR真是挺厲害的,一個錯別字都沒有,不服不行。論中文,還是百度比谷歌更懂一點(diǎn)。而且百度OCR提供了更多的參數(shù)讓你更靈活的處理圖片,比如自定義旋轉(zhuǎn),返回可信度,特定類型證件識別等等。
更多的OCR除了本文提到的OCR,其實還是有不少其他選擇。有一些直接提供Demo頁面,你直接上傳一張圖片就可以直接看到識別效果,比如:
微軟Azure 圖像識別:https://azure.microsoft.com/z...
有道智云文字識別:http://aidemo.youdao.com/ocrdemo
阿里云圖文識別:https://www.aliyun.com/produc...
騰訊OCR文字識別: https://cloud.tencent.com/pro...
你有沒有發(fā)現(xiàn)所有的大公司都有這樣的服務(wù)?以后我們買買買就行,花大力氣去發(fā)明輪子就沒多大意義了。
關(guān)于作者:Python技術(shù)愛好者,目前從事測試開發(fā)相關(guān)工作,轉(zhuǎn)載請注明原文出處。歡迎關(guān)注我的博客 https://betacat.online,你可以到我的公眾號中去當(dāng)吃瓜群眾。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41245.html
摘要:目前已作為開源項目發(fā)布在,其最新版本已經(jīng)支持中文,并提供了一個命令行工具。他能夠用來識別英文,但是不能識別中文。所以要下載中文的識別包這樣就能識別中文。至少對印刷的中文字識別效果是很好的。 1. Tesseract 介紹 Tesseract的OCR引擎最先由HP實驗室于1985年開始研發(fā),至1995年時已經(jīng)成為OCR業(yè)內(nèi)最準(zhǔn)確的三款識別引擎之一。然而,HP不久便決定放棄OCR業(yè)務(wù),Te...
摘要:與介紹將圖片翻譯成文字一般被稱為光學(xué)文字識別,。是目前公認(rèn)最優(yōu)秀最精確的開源系統(tǒng)。我們以圖片為例輸入命令識別結(jié)果如下只識別錯了一個字,識別率還是不錯的。最后加一句,對于彩色圖片的識別效果沒有黑白圖片的效果好。 OCR與Tesseract介紹 ??將圖片翻譯成文字一般被稱為光學(xué)文字識別(Optical Character Recognition,OCR)。可以實現(xiàn)OCR 的底層庫并不多,...
閱讀 2616·2021-09-28 09:35
閱讀 3265·2021-09-03 10:28
閱讀 2913·2019-08-30 15:43
閱讀 1480·2019-08-30 14:04
閱讀 1808·2019-08-29 17:02
閱讀 1818·2019-08-26 13:59
閱讀 697·2019-08-26 11:51
閱讀 3261·2019-08-23 17:16