python 图片识别_python识别图片文字
python識別圖片文字
哈嘍,大家好呀,我是滑稽君。大家在寫論文時可能經常碰到無法復制文字的文章。明明找到了需要的內容卻無法直接復制使用,這讓我們十分苦惱。那么本期滑稽君就告訴大家如何使用python識別圖片中的文字。
滑稽君整理了網上使用率最高的兩種方法。
一是pytesseract+Tessseract-OCR進行圖片識別。
二是調用百度文字識別提供的API進行圖片文字的處理。
下面我將告訴大家這兩種方法一些容易跳坑的地方。
視頻講解:
??pytesseract+Tessseract-OCR第一種方法需要注意的地方是一些第三方庫的下載,我們需要用到pytesseract庫和pillow庫,這兩個庫我們都可以在cmd中直接pip下載,需要注意的是我們還需額外下載一個文件——tesseract-ocr。下載這個文件之后我們直接安裝注意不要修改他的默認路徑(大神忽略)。一些小伙伴可能需要配置一下環境路徑,滑稽君安裝之后它自動幫我添加了,大家注意一下即可。
下載鏈接:
https://pan.baidu.com/s/1OL0g1MBzeijD23JN0UGC0Q這個工具默認支持英文,我們需要下載支持中文的包,然后放在這個目錄下。C:\Program Files (x86)\Tesseract-OCR\tessdata ?里面已經有了支持英文的包是eng開頭的,我們放入的支持中文的包是chi_sim開頭的意思是中文簡體。
接著我們需要在這個目錄下找到圖片中的最后一個文件,打開文件(用記事本即可)找到如圖所示位置后進行如下修改。這個路徑一般是通用的,這也是一開始為什么不修改默認路徑的原因。當我們準備工作都完成后代碼部分就比較簡單了。
源代碼:
import pytesseractfrom PIL import Image pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"text = pytesseract.image_to_string(Image.open('C:\\Users\\86157\\pysw.png'),lang="eng")#識別英文參數為 lang="eng" 中文為lang="chi_sim" 如果參數不對識別就會亂碼。# 創建一個txt文件,文件名為mytxtfile,并向文件寫入msgdef text_create(name, msg): desktop_path = "C:\\Users\\86157\\Desktop\\" # 新創建的txt文件的存放路徑 full_path = desktop_path + name + '.txt' # 也可以創建一個.doc的word文檔 file = open(full_path, 'w') file.write(msg) #msg也就是下面的Hello world!????file.close()????text_create('saveworld',text)??調用百度文字識別提供的API這個方法主要是使用百度文字識別提供的API接口,來完成對圖片文字的識別。需要用到baidu-api這個第三方庫,cmd中可以直接pip安裝。我們需要去百度云免費申請一個百度云文字識別api的接口,獲得你自己的APP_ID,API_KEY,SECRET_KEY。
源代碼:
#-*- coding: UTF-8 -*-#前提是python已安裝aip庫--》pip install baidu-aip import osfrom aip import AipOcrimport jsonAPP_ID = '' #你的APP_IDAPI_KEY = '' #你的API_KEYSECRET_KEY = '' #你的SECRET_KEYaipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)os.chdir("") #你需要轉換的圖片目錄,大家自行替換。dirs = os.listdir()def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read()options = {}options["language_type"] = "CHN_ENG"options["detect_direction"] = "true"options["detect_language"] = "true"options["probability"] = "true" print('開始處理,共'+str(len(dirs))+"張圖片。")flag=0T = 0 #統計處理圖片成功的數量for filePath in dirs: if filePath.split('.')[-1]=='txt':continue flag+=1 print('正在處理第'+str(flag)+'張圖片') try: result = aipOcr.basicGeneral(get_file_content(filePath), options) except BaseException as e: print(e) else: try: with open(filePath.split('.')[0]+'.txt','w',encoding='utf-8') as f: for i in result['words_result']: f.write(i['words']+'\n') T += 1 except BaseException as e : print(e) else: print('處理完成')print('{}全部處理完成!{}'.format("="*30,"="*30))print('處理成功的圖片有{}張,處理失敗的圖片有{}張'.format(T,len(dirs)-T))效果圖:
方法一:左邊為滑稽君自制的圖片,右邊為識別之后轉txt的效果。
可以看到中文識別正確率還說一點低的。英文識別的效果倒是還可以沒有出現錯誤的情況,這里就不展示了。
方法二:左邊為滑稽君自制的圖片,右邊為識別之后轉txt的效果。
可以看到第一種方法對圖片中文字的識別準確率較第二種要差很多,特別是在中文的識別上。因此大家日常使用的話還是推薦第二種方法,還有就是下載安裝文件和配置環境變量對小白來說不是那么友好。
第一種方法識別圖片中文字,如果圖片里有中英混雜的情況,就只能識別一種語言。而調用百度文字API的方法可以英文、中文、數字混合在一張圖里識別,并且準確率高。前者可以單機識別,后者則是要求網絡的。
本期素材來源:
https://blog.csdn.net/zhangshaohua1603/article/details/79722399https://blog.csdn.net/L141210113/article/details/88835914?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare??END兩種方法都為大家整理完畢了,有什么問題歡迎私信滑稽君。
總結
以上是生活随笔為你收集整理的python 图片识别_python识别图片文字的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 安卓各版本占有率(安卓各版本)
- 下一篇: python nums函数获取结果记录集
