Python調(diào)用百度AI實(shí)現(xiàn)圖片上文字識(shí)別功能實(shí)例
簡(jiǎn)介
Python免費(fèi)調(diào)用百度AI實(shí)現(xiàn)圖片上面的文字識(shí)別
步驟
安裝百度AI庫(kù)
!pip install baidu-aip
注冊(cè)百度AI開(kāi)放平臺(tái)
先注冊(cè)百度AI,獲得ID和密鑰。注冊(cè)方法可參考:注冊(cè)方法 只需走到 “1.6 獲取密鑰” 即可。然后記錄下自己的APP_ID、API_KEY、SECRET_KEY,就可以開(kāi)始了。
調(diào)用glob庫(kù)
glob庫(kù)用于獲得指定路徑下的指定后綴的文件,圖片使用的是《數(shù)學(xué)模型》pdf掃描版,部分如下:
import glob path = "數(shù)學(xué)模型\\" glob.glob(path+"*.png")
指定文件夾中的指定的.png后綴的文件,全部提取出來(lái)了:
選取第一張圖片 “數(shù)學(xué)模型1.png” 做測(cè)試:
files = glob.glob(path+"*.png") file = files[0]
調(diào)用AipOcr庫(kù)識(shí)別文字
導(dǎo)入AipOcr模塊,這個(gè)模塊是用于做文字識(shí)別的(OCR即Optical Character Recognition,光學(xué)字符識(shí)別)。填入你申請(qǐng)的ID和KEY,client = AipOcr()
是固定寫(xiě)法。先用二進(jìn)制方式rb打開(kāi),然后讀取,再調(diào)用百度AI進(jìn)行識(shí)別,并將識(shí)別結(jié)果存入message變量。
from aip import AipOcr #導(dǎo)入AipOcr模塊,用于做文字識(shí)別 import glob APP_ID = '*********' # 你申請(qǐng)的 API_KEY = '*********'# 你申請(qǐng)的 SECRET_KEY = '*********'# 你申請(qǐng)的 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) pic = open(file,'rb')# 以二進(jìn)制(rb)打開(kāi) img = pic.read() # 讀取 message = client.basicGeneral(img) # 調(diào)用百度AI識(shí)別圖片中的文字
查看message參數(shù),結(jié)果如下:
可見(jiàn),message參數(shù)的結(jié)果為 “大字典” 形式,其中的鍵 words_result
所對(duì)應(yīng)的值為一個(gè) “大列表” ,這個(gè)列表里又有很多鍵值對(duì),鍵都是words,值就是AI從圖片上識(shí)別出來(lái)的內(nèi)容。使用語(yǔ)句message['words_result'][0...n]['words']
可以篩選出該頁(yè)的標(biāo)題:
message['words_result'][1]['words']
for循環(huán)逐行提取:
for words in message['words_result']: word = words['words'] # 提取文字 print(word)
識(shí)別效果圖:
識(shí)別也不是完美的,有很多識(shí)別錯(cuò)誤與未識(shí)別出的文字。當(dāng)然,原圖字體越清晰,識(shí)別度越高。
可能會(huì)遇到的問(wèn)題
識(shí)別過(guò)程中可能會(huì)遇到類(lèi)似識(shí)別錯(cuò)誤(無(wú)法識(shí)別)問(wèn)題,原因是未領(lǐng)取免費(fèi)識(shí)別次數(shù),解決過(guò)程如下:
百度OCR API識(shí)別失敗:Open api qps request limit reached 錯(cuò)誤 解決方法
幾個(gè)月前,用Python寫(xiě)了個(gè)小工具,主要是用到了百度的OCR API做了個(gè)文字識(shí)別的小工具,前面一直能用,然而今天,在使用的時(shí)候,報(bào)錯(cuò)了。
錯(cuò)誤如下:Open api qps request limit reached
最后終于找到了解決方法,原來(lái),現(xiàn)在要自己去領(lǐng)取免費(fèi)的測(cè)試額度了?。。?/p>
領(lǐng)取免費(fèi)測(cè)試額度的地址:(或者你在你原來(lái)那個(gè)調(diào)用的那個(gè)項(xiàng)目里也可以找到免費(fèi)領(lǐng)取測(cè)試額度,見(jiàn)下圖)
https://console.bce.baidu.com/ai/#/ai/ocr/overview/resource/getFree
領(lǐng)取完之后,還是用原來(lái)項(xiàng)目的appID,apiKey,secretKey即可。
然后等領(lǐng)取額度到賬后,重新運(yùn)行就行了。
批量操作
批量操作的核心為for循環(huán),txt_file = open('數(shù)學(xué)模型.txt', 'a')
指打開(kāi)名字為“數(shù)學(xué)模型”的文本文件(若不存在則自動(dòng)新建),模式為添加模式,即'a'模式。添加模式是指,如果文本中已經(jīng)有一些內(nèi)容,則接著往下寫(xiě),不會(huì)影響原來(lái)的內(nèi)容。如果是'w'模式,則會(huì)將之前的內(nèi)容全部覆蓋。然后遍歷待處理的圖片,逐個(gè)處理:
from aip import AipOcr #導(dǎo)入AipOcr模塊,用于做文字識(shí)別 import glob APP_ID = '*********' # 你申請(qǐng)的 API_KEY = '*********'# 你申請(qǐng)的 SECRET_KEY = '*********'# 你申請(qǐng)的 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) path = "數(shù)學(xué)模型\\" files = glob.glob(path+"*.png") txt_file = open('數(shù)學(xué)模型.txt', 'a') for file in files: pic = open(file,'rb')# 以二進(jìn)制(rb)打開(kāi) img = pic.read() # 讀取 message = client.basicGeneral(img) # 調(diào)用百度AI識(shí)別圖片中的文字 for words in message['words_result']: word = words['words'] # 提取文字 print(word) txt_file.write(word) # 將文字寫(xiě)入文本文件 txt_file.close() # 關(guān)閉文本文件
總結(jié)
到此這篇關(guān)于Python調(diào)用百度AI實(shí)現(xiàn)圖片上文字識(shí)別功能的文章就介紹到這了,更多相關(guān)Python圖片上文字識(shí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python調(diào)用文字識(shí)別OCR輕松搞定驗(yàn)證碼
- python 百度aip實(shí)現(xiàn)文字識(shí)別的實(shí)現(xiàn)示例
- Python 實(shí)現(xiàn)任意區(qū)域文字識(shí)別(OCR)操作
- python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解
- python3.7中安裝paddleocr及paddlepaddle包的多種方法
- Python3使用騰訊云文字識(shí)別(騰訊OCR)提取圖片中的文字內(nèi)容實(shí)例詳解
- Python圖像處理之圖片文字識(shí)別功能(OCR)
- Python 圖片文字識(shí)別的實(shí)現(xiàn)之PaddleOCR
相關(guān)文章
python3操作微信itchat實(shí)現(xiàn)發(fā)送圖片
這篇文章主要為大家詳細(xì)介紹了python3操作微信itchat實(shí)現(xiàn)發(fā)送圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Python?命令行?prompt_toolkit?庫(kù)詳解
prompt_toolkit 是一個(gè)用于構(gòu)建強(qiáng)大交互式命令行的 Python 工具庫(kù)。接下來(lái)通過(guò)本文給大家介紹Python?命令行?prompt_toolkit?庫(kù)的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-01-01Numpy實(shí)現(xiàn)按指定維度拼接兩個(gè)數(shù)組的實(shí)現(xiàn)示例
Numpy提供了多個(gè)函數(shù)來(lái)拼接數(shù)組,其中最常用的是np.concatenate、np.vstack、np.hstack等,本文就來(lái)介紹一下Numpy實(shí)現(xiàn)按指定維度拼接兩個(gè)數(shù)組的實(shí)現(xiàn),感興趣的可以了解一下2024-03-03Python中日期和時(shí)間的用法超強(qiáng)總結(jié)
時(shí)間無(wú)疑是生活各個(gè)方面中最關(guān)鍵的因素之一,因此,記錄和跟蹤時(shí)間變得非常重要。在?Python?中,可以通過(guò)其內(nèi)置庫(kù)跟蹤日期和時(shí)間。今天我們來(lái)介紹關(guān)于?Python?中的日期和時(shí)間,一起來(lái)了解如何使用time和datetime模塊查找和修改日期和時(shí)間2022-10-10Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題
這篇文章主要介紹了Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01python中統(tǒng)計(jì)相同字符的個(gè)數(shù)方法實(shí)例
我們?cè)陂_(kāi)發(fā)中經(jīng)常需要統(tǒng)計(jì)某個(gè)字符或字符串出現(xiàn)的次數(shù),下面這篇文章主要給大家介紹了關(guān)于python中統(tǒng)計(jì)相同字符的個(gè)數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01簡(jiǎn)單了解python filter、map、reduce的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解python filter、map、reduce的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01