1. 程式人生 > >python識別圖片文字

python識別圖片文字

com www. ID lang 圖片 保存 打開 oid aid

因為學校要求要刷一門叫《包裝世界》的網課,而課程裏有200多道選擇題,而且只能在手機完成,網頁版無法做題,而看視頻是不可能看視頻的,這輩子都不可能看...所以寫了幾行代碼來進行百度搜答案

思路如下:

  1. 手機屏幕投影到電腦上;
  2. 截圖並識別圖片文字;
  3. 調用百度來進行搜索;
  4. 提取html關鍵字。

環境配置:python3.6、第三方庫:pyautogui、PIL、pytesseract、<a href="https://github.com/tesseract-ocr/tesseract">識別引擎tesseract-ocr</a>

要識別中文,ocr引擎要下載一個中文包<a href="https://github.com/tesseract-ocr/tesseract/wiki/Data-Files">chi_sim</a>放進Tesseract-OCR\tessdata裏面。安裝完ocr後還要配置一下調用路徑,在Python36\Lib\site-packages\pytesseract找到pytesseract.py(這是我的windows路徑),打開在裏面添加一下路徑:

1 # CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
2 tesseract_cmd = ‘tesseract‘
3 tesseract_cmd = ‘C:/Program Files (x86)/Tesseract-OCR/tesseract.exe‘
4 img_mode = ‘RGB‘

然後用AirDroid或者Vysor、360手機助手之類的將手機的屏幕投影到電腦上,用鼠標確定截圖坐標,代碼如下:

1 import pyautogui as pag
2 x,y = pag.position()
3 posStr = "position:"+str(x).rjust(4)+‘,‘+str(y).rjust(4)
4 print(posStr)

要獲取兩個坐標(截圖開始坐標和結束坐標),然後利用獲取的坐標運用如下代碼截圖並調用ocr引擎識別(識別出來的字是每個用空格分開的,所以要去除字符串中的空格),代碼如下:

 1 from PIL import Image
 2 from PIL import ImageGrab
 3 import pytesseract
 4 import webbrowser
 5 
 6 pos = (0,245,425, 327)
 7 cut_img = ImageGrab.grab(pos)
 8 cut_img.save(C:/imgSave/1.jpg) #保存截圖到文件夾中
 9 print
("screenshots sucess") 10 11 text=pytesseract.image_to_string(Image.open(C:/imgSave/1.jpg),lang=chi_sim) #調用識別引擎識別 12 text=text.replace(" ","") #去空格 13 print(text) 14 url = http://www.baidu.com/s?wd=%s % text #調用百度搜索 15 webbrowser.open(url)

最終因為搜出來的全是題庫,所以就沒有提取html關鍵字了,其實是懶

python識別圖片文字