背景:
学校进行安全知识教育考试,题目采用图片的格式显示,不方便复制粘贴题目搜索答案。因为懒得打字,所以采用OCR的方法识别图片中的字符。
代码:
import urllib
from tkinter import *
import urllib.request
from aip import AipOcr
# GUI类
class Application(Frame):
# GUI初始化
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.text = Text(self)
self.text.pack()
self.nameInput = Entry(self, {'width': 80})
self.nameInput.pack()
self.nameInput.insert('end', '输入图片的URL')
self.alertButton = Button(self, text='识别', command=self.hello)
self.alertButton.pack()
# 光学字符识别方法
def hello(self):
# 读取输入框中的URL
image_url = self.nameInput.get()
try:
# 调用百度的OCR API
image_string = client.basicGeneralUrl(image_url)
# 解析结果
image_string = image_string['words_result']
words_result = ''
for string in image_string:
words_result = words_result + string['words']
except:
words_result = '失败'
# 显示在文本框中
self.text.delete('1.0', 'end')
self.text.insert('end', words_result)
""" 你的 APPID AK SK """
APP_ID = 'AppID'
API_KEY = 'API Key'
SECRET_KEY = 'Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 启动GUI
app = Application()
# 设置窗口标题:
app.master.title('百度OCR')
# 主消息循环:
app.mainloop()
调用方法:
详见https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html
调用前需要在百度云上创建应用
本例中的代码如下:
""" 你的 APPID AK SK """
APP_ID = 'AppID'
API_KEY = 'API Key'
SECRET_KEY = 'Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 调用百度的OCR API
image_string = client.basicGeneralUrl(image_url)
GUI参考文档:
https://morvanzhou.github.io/tutorials/python-basic/tkinter/
上面的文档介绍的不是很全面,实际编程的时候还是建议直接看源代码:
运行结果: