赞
踩
提取文本的步骤:
先选择普通识图还是高精度识图, 默认是普通识图
然后
方法1: 点击选择图片,然后选中图片就会自动识别图片并提取文字(gif格式的不可以提取文字)
方法2: 手动粘贴路径到最上面的单行输入框,再点击开始识别
方法3: 先用其他截图软件(比如QQ截图),截图之后会自动存到剪切板中, 然后点击从粘贴板中导入图片并自动识图
可以在右侧栏预览图片, 识别文字结果在下方文本框展示出来,点击全部复制自动存入到剪切板中,如果嫌弃结果不准确请切换到高精度识图再试一次
方法一:在pycharm中点击左下角的
Terminal 然后输入命令 pip install baidu-aip
看到 Successfuly 字样即表示安装成功,安装成功后导包行就不会报错
方法二:进入pycharm的安装环境输入打开cmd命令窗口输入命令
pip install baidu-aip
因为我已经安装过了,所以提示
您使用的是pip版本9.0.1,但是也有版本20.3.3可用。
你应该考虑通过’python -m pip install——upgrade pip’命令进行升级
同理安装成功后导包行不会报错
import os import tkinter as tk import tkinter.messagebox import tkinter.filedialog from PIL import Image,ImageTk from aip import AipOcr from PIL import Image,ImageGrab # 选择图片函数 def chooseImg(): fileName = tk.filedialog.askopenfilename(title='选择图片', filetype=[('图片文件','*.jpg'),('图片文件','*.png'),('图片文件','*.bmp'),('不支持的图片文件','*.gif'),('所有类型文件','*.*')]) if fileName: varFileName.set(fileName) # 预览图片 showImg(fileName) # 百度图片识别文字 baiduOCR(fileName) # 预览图片函数 def showImg(fileName): # 动态给label设置图片,支持所有格式图片 img_open = Image.open(fileName) imgTk = ImageTk.PhotoImage(img_open) labelImg.config(image=imgTk) labelImg.image = imgTk # 百度图片识别文字 def baiduOCR(picfile): # 初始化 APP_ID = '16434848' # 刚才获取的 ID,下同 API_KEY = 'QGwg4nFU25HVgRW6hjAF3zNg' SECRECT_KEY = 'lFrvrLqxq7p0ZhEOFyMbZHgA0IGuGTo8' client = AipOcr(APP_ID, API_KEY, SECRECT_KEY) i = open(picfile, 'rb') img = i.read() print("正在识别图片:\t" + picfile) if varHighAccurate.get(): # True 高精度识图 print("高精度识图中....") message = client.basicAccurate(img) # 通用文字高精度识别 else: # False 普通识图 print("普通识图中...") message = client.basicGeneral(img) # 通用文字识别 print("识别成功! 文字是:") print(message) i.close(); if message.get('error_code'): # 出错了 tk.messagebox.showerror(title='图片提取文字出错了',message='暂不支持gif格式图片,可能网络中断') else: showMsg(message) # 识别出来了,就显示结果信息 # 显示结果信息 def showMsg(message): string='' for txt in message.get('words_result'): string += txt.get('words')+'\n' print(string) txtResult.delete(0.0,tk.END) #清空内容 0.0是lineNumber.colNumber的表示方法 txtResult.insert(tk.INSERT,string) #添加文字 # 一键复制结果信息 def Copy(): txtResult.clipboard_clear() string = txtResult.get(0.0,tk.END) txtResult.clipboard_append(string) print("复制的字符是:"+string) # 粘贴路径之后再识别 def start(): path = entryFileName.get() path = path.strip(' ').strip('"') # 去掉字符串开头结尾的空格和双引号 if len(path)<=0: return print(path) showImg(path) baiduOCR(path) # 从粘贴板获取图片,并且识图 def clipboard(): # 从粘贴板获取 img_open = ImageGrab.grabclipboard() if isinstance(img_open,Image.Image): #如果是图片 print("剪切板中有图片") imgTk = ImageTk.PhotoImage(img_open) # 需要导入PIL中的ImageTk # 预览图片 labelImg.config(image=imgTk) labelImg.image = imgTk # 保存图片 tempFileName = 'D:/删除.jpg' img_open.save(tempFileName) # 百度识图 baiduOCR(tempFileName) # 再删除缓存的图片 if (os.path.exists(tempFileName)): os.remove(tempFileName) else: tk.messagebox.showinfo('粘贴板中没有图像信息','请先用QQ截图后,再来使用') # 窗口 app = tk.Tk() app.title("图片提取文字,不支持gif格式图片") app.geometry('1000x500') # 图片路径 varFileName = tk.StringVar() varFileName.set('') # 结果信息 varTxtMsg = tk.StringVar() varTxtMsg.set('') # 百度高精度识图,默认false varHighAccurate = tk.BooleanVar() varHighAccurate.set(False) # 图片路径输入框 entryFileName = tk.Entry(app,width=35, textvariable=varFileName) entryFileName.place(x=90,y=10) # 选择图片并且识别按钮 btn_chooseImg = tk.Button(app,text='选择图片',command=chooseImg) btn_chooseImg.place(x=10,y=5) # 开始识别按钮 btn_start = tk.Button(app,text='开始识别',command=start) btn_start.place(x=400,y=5) # 从粘贴板导入图片并且识别 btn_clipboard = tk.Button(app,text='从粘贴板导入图片并且识别',command=clipboard) btn_clipboard.place(x=15,y=55) # 预览图片的标签 labelImg = tk.Label(app) labelImg.place(x=500,y=5) # 是否高精度识图 tk.Radiobutton(app,text="普通识图",variable=varHighAccurate,value=False).place(x=30,y=110) tk.Radiobutton(app,text="高精度识图",variable=varHighAccurate,value=True).place(x=240,y=110) # 显示结果的文本框 txtResult = tk.Text(app,width=50, height=15) txtResult.place(x=15,y=200) # 文本结果信息添加到粘贴板中 tk.Button(app,text='全部复制',command=Copy).place(x=160,y=150) app.mainloop()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。