这段时间,在同事的怂恿下,接触了点利用python摄像头动态识别的知识。上周三,二丫发的数学晨读卡片丢了,找小朋友的家长照了照片转给了我,如果对着照片一个字一个字的打太慢了,于是琢磨着写了个东东,识别率还行。
先是下载tesseract-ocr, https://digi.bib.uni-mannheim.de/tesseract/ ; 根据自己的系统选择,我安装了202003028版本,下一步安装即可,然后就要用pip安装相关模块了,pip install pytesseract和pip install PILLOW ,如果要识别汉字,还要下载支持汉字的库chi_sim.traineddata(和tesseract-ocr版本要吻合),这里有个坑,都是国外的网站chi_sim.traineddata有50M,我下了只有几k(网速慢没下完全),导致程序怎么都运行不了。
在这里插入代码片
```# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
try:
import pytesseract
from PIL import Image
except ImportError:
print( '模块导入错误,请使用pip安装,pytesseract依赖以下库:')
print ('http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil')
print ('http://code.google.com/p/tesseract-ocr/')
raise SystemExit
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' #定义tesseract目录
tessdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata\"' #定义tessdata目录
img = Image.open('1.jpg','r')
img.load()
vcode = pytesseract.image_to_string(img,config=tessdata_dir_config,lang='chi_sim')#如果图片没汉字,可删除lang="chi_sim"
with open("output.txt", "w") as f: #将识别出来的文字存到本地
print(vcode)
f.write(str(vcode))
PS:百度的图片识别非常棒,有API接口可以程序调用,很方便。
利用周六日又把百度的API接口试了试,很nice.(要pip install baidu-aip,还要在百度中申请账号,APP_ID等信息就是百度中提供的)
import time
import tkinter.messagebox
from aip import AipOcr
import os,os.path
import pywintypes
import tkinter as tk
from tkinter import filedialog, dialog,ttk
# 连接api
APP_ID = "xxxx"
API_KEY = "xxxxxxxx"
SECRET_KEY = "xxxxxxx"
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 返回值设置
options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "False"
options["detect_language"] = "False"
options["probability"] = "False"
def opendir():
dir=os.path.dirname(fpath.get())
os.system('start '+ dir)
def getfile():
file_path=filedialog.askopenfilename()
fpath.set(file_path)
tt=os.path.split(file_path)[1]
print(tt)
i = open(tt,'rb')
img = i.read()
message = client.basicGeneral(img)
if os.path.exists("lucky.doc"):
os.remove("lucky.doc")
with open("lucky.doc","a") as f: #将识别出来的文字追加存到本地
for i in message.get('words_result'):
#print(i.get('words'))
f.write(str(i.get('words'))+"\n")
print( "已转换完成")
这次的效果是非常好了,并且百度的图片转换每天 5000次免费,够用了。
*
搞完后没几天,有个自称百度的工作人员打来电话,说发现我近来有引用百度应用的情况,希望商用的话可以咨询合作。好吧,我只是测试测试,等哥真搞了什么项目,一定会帮衬你百度的!!