使用Python快速實(shí)現(xiàn)圖片文字識(shí)別(30行代碼)
共 2108字,需瀏覽 5分鐘
·
2022-02-09 17:36
前言
想必使用QQ的的同學(xué)中有很多人對(duì)圖片轉(zhuǎn)文字這個(gè)功能不陌生,這個(gè)功能極大地滿足了我們的內(nèi)容提取以及后期修改的需求。但是如果我們想批量進(jìn)行圖片轉(zhuǎn)文字怎么辦呢?總不能一直手動(dòng)重復(fù)這么多遍吧?為了解放你的雙手,提高生產(chǎn)力,我特地寫(xiě)了這篇文章來(lái)教你使用 python 來(lái)實(shí)現(xiàn)圖片轉(zhuǎn)文字,注意,只需要 30 行代碼哦(去除代碼注釋之后)!
效果展示
待識(shí)別的圖片如下
運(yùn)行之后的識(shí)別結(jié)果(右邊部分)
對(duì)比兩張圖片,可以看到識(shí)別的效果非常不錯(cuò)。
完整的代碼
import requests
import base64
def ocr(img_path: str) -> list:
'''
根據(jù)圖片路徑,將圖片轉(zhuǎn)為文字,返回識(shí)別到的字符串列表
'''
# 請(qǐng)求頭
headers = {
'Host': 'cloud.baidu.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76',
'Accept': '*/*',
'Origin': 'https://cloud.baidu.com',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://cloud.baidu.com/product/ocr/general',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
}
# 打開(kāi)圖片并對(duì)其使用 base64 編碼
with open(img_path, 'rb') as f:
img = base64.b64encode(f.read())
data = {
'image': 'data:image/jpeg;base64,'+str(img)[2:-1],
'image_url': '',
'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic',
'detect_direction': 'false'
}
# 開(kāi)始調(diào)用 ocr 的 api
response = requests.post(
'https://cloud.baidu.com/aidemo', headers=headers, data=data)
# 設(shè)置一個(gè)空的列表,后面用來(lái)存儲(chǔ)識(shí)別到的字符串
ocr_text = []
result = response.json()['data']
if not result.get('words_result'):
return []
# 將識(shí)別的字符串添加到列表里面
for r in result['words_result']:
text = r['words'].strip()
ocr_text.append(text)
# 返回字符串列表
return ocr_text
'''
img_path 里面填圖片路徑,這里分兩種情況討論:
第一種:假設(shè)你的代碼跟圖片是在同一個(gè)文件夾,那么只需要填文件名,例如 test1.jpg (test1.jpg 是圖片文件名)
第二種:假設(shè)你的圖片全路徑是 D:/img/test1.jpg ,那么你需要填 D:/img/test1.jpg
'''
img_path = 'test1.jpg'
# content 是識(shí)別后得到的結(jié)果
content = "".join(ocr(img_path))
# 輸出結(jié)果
print(content)
注意事項(xiàng)
以上代碼為 python 代碼 ,如需要運(yùn)行成功,則要安裝 python3 版本,并且需要額外安裝 requests 這個(gè)第三方庫(kù),如果你沒(méi)有具備以上條件,可以看看我的這篇文章來(lái)搭建基礎(chǔ)環(huán)境
順手牽羊:Win下快速搭建Python編程環(huán)境如果你想批量進(jìn)行圖片轉(zhuǎn)文字,那么需要具備一定的編程基礎(chǔ),例如會(huì)使用 for 循環(huán)語(yǔ)句。對(duì)于小白而言,沒(méi)有空學(xué)這個(gè)的話,可以給我留言,我后面再加上能實(shí)現(xiàn)圖片批量轉(zhuǎn)文字的版本。
最后
感謝大家的閱讀,希望我的分享能給你帶來(lái)幫助。
評(píng)論
圖片
表情
