示例简介
python利用百度文字识别功能,实现对上传的图片进行扫描,获取图片的文字信息,并生成可执行的程序。
开发环境:Windows7+python3.7+pycharm2018.2.4(开发工具);
目录机构:文件夹“build”、“dist”和文件“discernImg.spec”是生成exe时产生的数据;
最终效果:
百度端创建应用
创建过程参考《微信小程序利用百度AI实现扫描身份证获取信息功能》(把“图像识别”换为“文字识别”)。
实现过程
一、阅读器UI设计
1、安装模块和配置工具,参考《python实现小说阅读器》;
2、运行工具QtDesigner,利用QtDesigner工具箱设计出界面效果(所需要的控件可查看右边区域),保存效果为文件dc.ui;
3、对文件dc.ui执行pyUIC(ui转化为py代码),执行完生成文件dc.py。
二、代码设计
文件“discernImg.py”代码如下,具体代码解释可参考《python智能联系人管理》;
Tips:tokenUrl更换为文字识别,详细可参考
“https://cloud.baidu.com/doc/OCR/s/Sk3h7xyad”;
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
# 引入自定义模块
import dc
# 引入内置模块
import sys
import os
# 引入第三方模块
import requests, base64
from PIL import Image
class parentWindow(QWidget, dc.Ui_Form):
# 初始化方法
def __init__(self):
# 找到父类 首页面
super(parentWindow, self).__init__()
# 初始化页面方法
self.setupUi(self)
# 点击选择图片
self.selectImg.clicked.connect(self.openfile)
# 点击查看图片
self.viewImg.clicked.connect(self.viewbtn)
# 选择图片执行方法
def openfile(self):
# 启动选择文件对话空,查找jpg以及png图片
self.download_path = QFileDialog.getOpenFileName(self, "选择要识别的图片", os.getcwd(), "Image Files(*.jpg *.png)")
# 判断是否选择图片
if not self.download_path[0].strip():
QMessageBox.information(self, '提示信息', '没有选择名片图片')
pass
else:
# pixmap解析图片
pixmap = QPixmap(self.download_path[0])
# 设置图片
self.imgLabel.setPixmap(pixmap)
# 让图片自适应label大小
self.imgLabel.setScaledContents(True)
try:
# 识别名片图片返回识别结果
content = self.recgImg()
except:
QMessageBox.information(self, '提示信息', '识别错误请重新选择图片')
# 识别图片的数据赋值
words_result = content['words_result']
# print(words_result)
text = ''
for item in words_result:
for v in item.values():
text = text + '\n' + v
self.discernText.setText(text)
# 识别名片图片
def recgImg(self):
# 获取baiduToken
apikey = '你的apikey'
seckey = '你的seckey'
tokenUrl = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + apikey + '&client_secret=' + seckey
res = requests.get(url=tokenUrl, headers={'content-type': 'application/json; charset=UTF-8'}).json()
baiduToken = res['access_token']
'''
图片识别(API)
'''
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"
# 二进制方式打开图片文件
f = open(self.download_path[0], 'rb')
img = base64.b64encode(f.read())
params = {"image": img}
# access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + baiduToken
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
# print(response.json())
return response.json()
# 点击查看图片显示大图功能
def viewbtn(self):
if self.download_path:
# 使用电脑中的看图工具打开图片
img = Image.open(self.download_path[0])
# 显示图片
img.show()
else:
QMessageBox.information(self, '提示信息', '先选择名片图片')
if __name__ == '__main__':
# 每一个PyQt5应用都必须创建一个应用对象
app = QApplication(sys.argv)
# 初始化页面
window = parentWindow()
# 显示首页
window.show()
sys.exit(app.exec_())
三、打包成exe
在项目下执行语句“pyinstaller -F discernImg.py”,打包成功后项目中新增dist文件,exe文件即为打包后的程序。
文章为用户上传,仅供非商业浏览。发布者:Lomu,转转请注明出处: https://www.daogebangong.com/articles/detail/Python%20implements%20image%20recognition%20text%20program.html
评论列表(196条)
测试