python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...
在日常辦公或者學習中,往往存在這樣一個工作場景,比如,“老王,我這里有一張圖片,你把里面的文字信息給我整理出來”,都2021年了,你真的還在手敲圖片文字信息么?那么還不趕緊收藏這篇秘籍,這里本渣渣總結了三種方法,教你如何將圖片上的文字信息提取出來,圖片轉成文字信息的方法。
方法一:QQ/微信聊天工具
對,你沒看錯,就是QQ聊天工具,新版本的微信也已經支持圖片提取文字信息了,同時也支持翻譯,相信大部分人應該已經使用過,而且效果也非常出色!
該方法更適合移動端操作,識別效果也很給力,推薦操作使用!
方法二:網上在線圖文識別工具
直接百度搜索可以找到不少圖文識別工具,大部分應該是調用接口封裝而成的網頁工具,操作相比第一種會繁瑣一些,畢竟你需要上傳文件,然后再下載文件。
比如:http://www.pdfdo.com/image-to-txt.aspx
該方法大家可以嘗試一下,網上有不少這樣的工具,圖片識別量小可以免費使用,小心被割韭菜即可,當然識別率并非百分百,不妨參考嘗試使用!
方法三:應用Python寫圖片識別文字工具(騷操作,僅供裝比使用)
騷操作來了,我們可以應用python來自己寫一個工具腳本,一個圖片識別文字工具腳本,可以批量操作,解放雙手,當然僅供裝比使用,當然本渣渣這么菜,肯定是直接調用接口啦!
方法一:EasyOCR庫
Python中有一個不錯的OCR庫-EasyOCR,在GitHub已有9700star。它可以在python中調用,用來識別圖像中的文字,并輸出為文本。
https://github.com/JaidedAI/EasyOCR
EasyOCR支持超過80種語言的識別,包括英語、中文(簡繁)、阿拉伯文、日文等,并且該庫在不斷更新中,未來會支持更多的語言。
- 1.步驟一:安裝 EasyOCR庫
注意:EasyOCR庫比較大,一定要更改為國內源,要不然等到天荒地老!
- 2.步驟二:使用方法介紹
EasyOCR的用法非常簡單,分為三步:
1.創建識別對象;2.讀取并識別圖像;3.導出文本。
- 3.步驟三:實例使用參考
參考源碼:
#?導入easyocrimport?easyocr
#?創建reader對象
reader?=?easyocr.Reader(['ch_sim','en'])?
#?讀取圖像
result?=?reader.readtext('test.jpg')
#?結果
print(result)
可惜未調試成功,暫不清楚問題所在,貼出問題所在,知曉的老哥可以指點一二!
報錯信息:
E:\Python\venv\Scripts\python.exe?E:/Python/twsb/ff2.pyE:\Python\venv\lib\site-packages\skimage\io\manage_plugins.py:23:?UserWarning:?Your?installed?pillow?version?is?7.1.0.?Several?security?issues?(CVE-2020-11538,?CVE-2020-10379,?CVE-2020-10994,?CVE-2020-10177)?have?been?fixed?in?pillow?7.1.0?or?higher.?We?recommend?to?upgrade?this?library.
??from?.collection?import?imread_collection_wrapper
CUDA?not?available?-?defaulting?to?CPU.?Note:?This?module?is?much?faster?with?a?GPU.
Downloading?detection?model,?please?wait
Traceback?(most?recent?call?last):
??File?"E:/Python/twsb/ff2.py",?line?4,?in?
????reader?=?easyocr.Reader(['ch_sim','en'])
??File?"E:\Python\venv\lib\site-packages\easyocr\easyocr.py",?line?170,?in?__init__
????urllib.request.urlretrieve(model_url['detector'][0]?,?DETECTOR_PATH)
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?247,?in?urlretrievewith?contextlib.closing(urlopen(url,?data))?as?fp:
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?222,?in?urlopenreturn?opener.open(url,?data,?timeout)
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?531,?in?open
????response?=?meth(req,?response)
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?640,?in?http_response
????response?=?self.parent.error(
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?569,?in?errorreturn?self._call_chain(*args)
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?502,?in?_call_chain
????result?=?func(*args)
??File?"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\urllib\request.py",?line?649,?in?http_error_defaultraise?HTTPError(req.full_url,?code,?msg,?hdrs,?fp)
urllib.error.HTTPError:?HTTP?Error?403:?Forbidden
Process?finished?with?exit?code?1
方法二:ORC(tesseract-ocr)識別
安裝pytesseract庫,必須先安裝其依賴的PIL及tesseract-ocr,其中PIL為圖像處理庫,而后面的tesseract-ocr則為google的ocr識別引擎。
- 1.步驟一:配置ORC本地環境
安裝tesseract-ocr,這個沒有什么好說的,下載好程序,點擊下一步,安裝步驟安裝即可!
但是需要配置系統環境變量,或者在調用程序的時候需要注明工具的路徑,即安裝后tesseract.exe的路徑!
關于配置系統環境變量可自行百度配置,這里本渣渣沒有配置,直接注明應用路徑地址:
pytesseract.pytesseract.tesseract_cmd?=?r'D:/Program?Files/Tesseract-OCR/tesseract.exe'注意:
下載chi_sim.traindata字庫。要有這個才能識別中文。
下好后,放到Tesseract-OCR項目的tessdata文件夾里面。
為了便于大家測試使用,這里本渣渣打包了工具程序包!
關注本渣渣微信公眾號:二爺記
后臺回復 ocr
即可獲取tesseract-ocr及中文識別庫(本渣渣系統是win7 64位,親測可用)!
- 2.步驟二:安裝庫
安裝pytesseract(換源)和安裝PIL(換源)
pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?pytesseractpip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?pillow
- 3.步驟三:調用接口識別圖片文字信息
參考源碼:
#?圖像識別初識#author:微信:huguo00289
#微信公眾號:二爺記
#?-*-?coding:?utf-8?-*-
import?pytesseract
from?PIL?import?Image
pytesseract.pytesseract.tesseract_cmd?=?r'D:/Program?Files/Tesseract-OCR/tesseract.exe'
image?=?Image.open('cs.png')
#code?=?pytesseract.image_to_string(image)
code?=?pytesseract.image_to_string(image,?lang="chi_sim+eng")
print(code)
本方法對于識別一些簡單純凈的中文、數字、字母和標點符號的效果還是不錯的,如果是經過處理的圖片,比如驗證碼等圖片的識別,需要借助jTessBoxEditor訓練字庫才能提高識別的準確率哦!
方法三:調用百度官方OCR接口
調用百度官方OCR接口,付費,識別率高!
官方介紹:多場景、多語種、高精度的文字檢測與識別服務,多項ICDAR指標居世界第一;廣泛適用于遠程身份認證、財稅報銷、文檔電子化等場景,為企業降本增效;提供穩定易用的在線API、離線SDK、軟件部署包多種服務形式,最高可享每天50000次免費調用。
官方調用接口參考源碼:
- 1.獲取Access Token權限
#?獲取Access?Token權限
import?requests?
#?client_id?為官網獲取的AK,?client_secret?為官網獲取的SK
host?=?'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官網獲取的AK】&client_secret=【官網獲取的SK】'
response?=?requests.get(host)
if?response:
????print(response.json())
- 2.調用接口識別圖片文字信息
import?requests
import?base64
'''
通用文字識別
'''
request_url?=?"https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
#?二進制方式打開圖片文件
f?=?open('[本地文件]',?'rb')
img?=?base64.b64encode(f.read())
params?=?{"image":img}
access_token?=?'[調用鑒權接口獲取的token]'
request_url?=?request_url?+?"?access_token="?+?access_token
headers?=?{'content-type':?'application/x-www-form-urlencoded'}
response?=?requests.post(request_url,?data=params,?headers=headers)
if?response:
????print?(response.json())
本渣渣親自上手擼一發,僅供參考代碼:
#?encoding:utf-8#author:微信:huguo00289
#微信公眾號:二爺記
#百度通用文字識別(標準版)
#https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
import?requests
import?base64
def?bdocr(AK,SK,imgname):
????host?=?f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={AK}&client_secret={SK}'
????response?=?requests.get(host)
????access_token=response.json()['access_token']
????request_url?=?"https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
????#?二進制方式打開圖片文件
????f?=?open(imgname,?'rb')
????img?=?base64.b64encode(f.read())
????params?=?{"image":img}
????request_url?=?request_url?+?"?access_token="?+?access_token
????headers?=?{'content-type':?'application/x-www-form-urlencoded'}
????response?=?requests.post(request_url,?data=params,?headers=headers)
????datas_json=response.json()['words_result']
????for?data_json?in?datas_json:
????????data=data_json['words']
????????print(data)
if?__name__=='__main__':
????AK="API?Key"???#client_id?為官網獲取的AK
????SK="Secret?Key"???#client_secret?為官網獲取的SK
????imgname='cs.png'??#圖片路徑名
????bdocr(AK,?SK,imgname)
最后,我們來實現批量識別圖片文字信息的工具,應用python也是非常容易實現的,就是讀取文件夾里的所有圖片,然后通過循環遍歷來反復調用接口即可獲取到所有圖片的文字信息,這里接口,本渣渣直接調用的是百度的OCR接口,推薦使用。
附上參考源碼,僅供參考使用:
#?encoding:utf-8#author:微信:huguo00289
#微信公眾號:二爺記
#批量百度通用文字識別(標準版)
#https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
import?requests
import?base64
import?os
#讀取文件夾里所有的圖片
def?read_imgs(path):
????imgs?=?[]
????for?filename?in?os.listdir(path):
????????img?=?f'{path}\\{filename}'
????????if?'jpg'?in?str(os.path.splitext(img)[-1]):
????????????print(img)
????????????imgs.append(img)
????????if?'png'?in?str(os.path.splitext(img)[-1]):
????????????print(img)
????????????imgs.append(img)
????print(f'共有?{len(imgs)}?張圖片!')
????return?imgs
#獲取百度access_token權限
def?get_access_token(AK,?SK):
????host?=?f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={AK}&client_secret={SK}'
????response?=?requests.get(host)
????access_token=response.json()['access_token']
????return?access_token
#調用百度ocr接口識別圖文文字信息
def?bdocr(access_token,imgname):
????request_url?=?"https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
????#?二進制方式打開圖片文件
????f?=?open(imgname,?'rb')
????img?=?base64.b64encode(f.read())
????params?=?{"image":img}
????request_url?=?request_url?+?"?access_token="?+?access_token
????headers?=?{'content-type':?'application/x-www-form-urlencoded'}
????response?=?requests.post(request_url,?data=params,?headers=headers)
????datas_json=response.json()['words_result']
????for?data_json?in?datas_json:
????????data=data_json['words']
????????print(data)
if?__name__=='__main__':
????AK="API?Key"???#client_id?為官網獲取的AK
????SK="Secret?Key"???#client_secret?為官網獲取的SK
????path=r'path'???#文件夾路徑
????imgs=read_imgs(path)
????access_token=get_access_token(AK,?SK)
????for?img?in?imgs:
????????print(f"正在識別:{img}")
????????bdocr(access_token,img)
總結
1.一般的驗證碼識別,大小寫字母,數字,中文混合驗證碼都可以考慮使用,沒錯可實現論壇回帖,發帖驗證碼自動打碼的功能,比如應用百度ocr接口,可自行處理豆瓣回帖自動打碼功能。
2.當然還有就是seo內容的來源問題解決,比如抄書神器,把圖片文字信息內容整合為你網站的純干貨文章內容,當然你需要注意規避版權!
3.可以自行整合為exe工具,或者是網頁在線工具,方便他人使用 ,也就是本渣渣這里介紹的方法二的網上在線圖文識別工具,用來引流,做一個工具類型的網站。
參考來源:
1.如何提取圖片中的文字?這款Python 庫 4行代碼搞定!
https://mp.weixin.qq.com/s/RpZzYg3cMynWHVWQT3fk1g
2.Python 圖片文字識別
https://www.cnblogs.com/zhurong/p/11685013.html
3.pillow、pytesseract-ocr、pytesseract的安裝和中文的識別
https://blog.csdn.net/qq_38190041/article/details/102903464
4.python庫學習 - pytesseract 識別圖片中文字
https://www.jianshu.com/p/40ed39f3efbd
5.通用文字識別(標準版)
https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
?? ? ?
微信公眾號:二爺記
不定時分享python源碼及工具
總結
以上是生活随笔為你收集整理的python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: memmove实现
- 下一篇: python关闭浏览器删除session