搭建环境:
1.Python3.7
2.Pycharm编译环境
3.PyQt库
4.百度OCR文字识别调用接口账号(APP_ID,APP_Key,Secret Key)
本项目用到的Python库:Pillow,baidu-aip,pyinstaller,urllib3,PyQt5等,可通过Pycharm在线安装或通过Pip install 安装
成功检测搭建环境完成方法:
1.Cmd-Python 可成功显示Python版本号信息进入Python运行环境
2.Pycharm网上直接下载安装,首次安装有30天试用期
3.PyQt5库可采用pip install --在线方式安装,或者采用pip线下安装,不建议在线安装,不一定和Python3.7可配套使用。
PyQt5下载地址:
4.百度OCR文字识别接口个人账号申请(产品服务-人工智能-文字识别)
账号申请网址:/
1.获取并导入当前本地Python库
File-Setting-“当前项目名称”-Python Interpreter-设置-Add-Location-Inherit global site-packages。
2.使用External tools建立扩展工具 QTUI 和 To Py
QTUI 和 To Py的作用如下:
a.QTUI :调用PyQt5库安装后生成的程序开启程序可视化界面设计。
b.To Py:QTUI生成的界面是.ui格式,Python运行需要将.ui格式的界面文件转换为.py文件,To Py可实现该功能。
c.QT UI扩展工具的设置
d.To Py 工具的设置
Program:选择Python安装路径下Script文件夹下的文件
Arguments:-m PyQt5.uic.pyuic F i l e N a m e FileName FileName -o F i l e N a m e W i t h o u t E x t e n s i o n FileNameWithoutExtension FileNameWithoutExtension.py
Working dorectory: F i l e D i r FileDir FileDir
e.扩展工具的使用
Pycharm菜单栏-Tools-External tools-QT UI(启动设计界面)
.ui文件右键-External tools-To Py(转换Python文件)
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import glob
from os import path
import os
from aip import AipOcr
from PIL import Imageclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")size(775, 234)MainWindow.setSizeIncrement(QtCore.QSize(20, 20))MainWindow.setBaseSize(QtCore.QSize(18, 20))alwidget = QtWidgets.QWidget(alwidget.setObjectName("centralwidget")self.label = QtWidgets.alwidget)self.label.setGeometry(QtCore.QRect(60, 10, 101, 41))self.label.setMinimumSize(QtCore.QSize(20, 20))self.label.setSizeIncrement(QtCore.QSize(2, 2))self.label.setBaseSize(QtCore.QSize(20, 18))font = QtGui.QFont()font.setPointSize(18)self.label.setFont(font)self.label.setTextFormat(QtCore.Qt.AutoText)self.label.setObjectName("label")self.label_2 = QtWidgets.alwidget)self.label_2.setGeometry(QtCore.QRect(60, 50, 101, 41))font = QtGui.QFont()font.setPointSize(18)self.label_2.setFont(font)self.label_2.setObjectName("label_2")self.label_3 = QtWidgets.alwidget)self.label_3.setGeometry(QtCore.QRect(10, 90, 151, 41))font = QtGui.QFont()font.setPointSize(18)self.label_3.setFont(font)self.label_3.setObjectName("label_3")self.lineEdit = QtWidgets.alwidget)self.lineEdit.setGeometry(QtCore.QRect(160, 20, 601, 31))font = QtGui.QFont()font.setPointSize(18)self.lineEdit.setFont(font)self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.alwidget)self.lineEdit_2.setGeometry(QtCore.QRect(160, 60, 601, 31))font = QtGui.QFont()font.setPointSize(18)self.lineEdit_2.setFont(font)self.lineEdit_2.setText("")self.lineEdit_2.setObjectName("lineEdit_2")self.lineEdit_3 = QtWidgets.alwidget)self.lineEdit_3.setGeometry(QtCore.QRect(160, 100, 601, 31))font = QtGui.QFont()font.setPointSize(18)self.lineEdit_3.setFont(font)self.lineEdit_3.setText("")self.lineEdit_3.setObjectName("lineEdit_3")self.pushButton = QtWidgets.alwidget)self.pushButton.setGeometry(QtCore.QRect(410, 150, 171, 51))font = QtGui.QFont()font.setPointSize(18)self.pushButton.setFont(font)self.pushButton.setObjectName("pushButton")self.pushButton.setToolTip("确认")self.pushButton_2 = QtWidgets.alwidget)self.pushButton_2.setGeometry(QtCore.QRect(590, 150, 171, 51))font = QtGui.QFont()font.setPointSize(18)self.pushButton_2.setFont(font)self.pushButton_2.setObjectName("pushButton_2")MainWindow.alwidget)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.anslateUi(MainWindow)tSlotsByName(MainWindow)# 单击Confirm事件进行转换self.t(Buttonclick)# 单击Cancle按键退出程序self.pushButton_t(quit)def retranslateUi(self, MainWindow):_translate = anslateMainWindow.setWindowTitle(_translate("MainWindow", "Pic-Txt"))self.label.setText(_translate("MainWindow", "APP ID :"))self.label_2.setText(_translate("MainWindow", "API Key:"))self.label_3.setText(_translate("MainWindow", "SECRECT_KEY:"))self.lineEdit.setText(_translate("MainWindow", ""))self.lineEdit_2.setText(_translate("MainWindow", ""))self.lineEdit_3.setText(_translate("MainWindow", ""))self.pushButton.setText(_translate("MainWindow", "confirm"))self.pushButton_2.setText(_translate("MainWindow", "cancle"))def quit():_())def Buttonclick():appid =()appkey =ui.()appword = ui.()outfile = 'outdir = 'tmp'ists(outfile):os.remove(outfile)if ists(outdir):os.mkdir(outdir)print("压缩过大的图片...")for picfile in glob.glob("picture/*"):convertimg(picfile, outdir)print("图片识别...")for picfile in glob.glob("tmp/*"):baiduOCR(picfile, outfile, appid, appkey, ve(picfile)print('图片文本提取结束!文本输出结果位于 %s 文件中。' % vedirs(outdir)def convertimg(picfile, outdir):'''调整图片大小,对于过大的图片进行压缩picfile: 图片路径outdir: 图片输出路径'''img = Image.open(picfile)width, height = img.sizewhile (width * height > 4000000): # 该数值压缩后的图片大约 两百多kwidth = width // 2height = height // 2new_img = size((width, height), Image.BILINEAR)new_img.save(path.join(outdir, os.path.basename(picfile)))def baiduOCR(picfile, outfile,appid,appkey,appword):"""利用百度api识别文本,并保存提取的文字picfile: 图片文件名outfile: 输出文件"""filename = path.basename(picfile)APP_ID = appidAPI_KEY = appkeySECRECT_KEY = appwordclient = AipOcr(APP_ID, API_KEY, SECRECT_KEY)i = open(picfile, 'rb')img = i.read()print("正在识别图片:t" + filename)message = client.basicGeneral(img) # 通用文字识别,每天 50 000 次免费# message = client.basicAccurate(img) # 通用文字高精度识别,每天 800 次免费print("识别成功!")i.close();with open(outfile, 'a+') as fo:fo.writelines("+" * 60 + 'n')fo.writelines("识别图片:t" + filename + "n" * 2)fo.writelines("文本内容:n")# 输出文本内容for text ('words_result'):fo.('words') + 'n')fo.writelines('n' * 2)#print("文本导出成功!")print()
#主程序
if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)MainWindow = QtWidgets.QMainWindow()ui = Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()_())
7.将Python项目输出为Windows EXE可执行文件
1)打开Pycharm。
2)打开Terminal(快捷键Alt + F12)
3)Pip安装pyinstaller工具
pip install pyinstaller
4)生成本项目可执行文件--------Terminal中输入:
pyinstaller -F -w UI.py
注:UI.py是我的项目启动文件名称,你要替换成你自己的项目启动名称。
生成的可执行文件放在同目录dist下。
-F(注意大写)是所有库文件打包成一个可执行文件,windows下是exe,Linux下是对应的可执行文件;
-w是禁止弹出黑色控制台窗口。
如果你的项目调用了图片等本地资源,请将你的可执行文件放在对应目录才能运行。
程序输出后生成UI.exe Windows可执行程序,同时在同目录下新建Picture文件夹,然后将待转换图片放到Picture文件夹内,点击Confirm。同目录输出的为图片转换后的结果,支持批量转换。
本文发布于:2024-01-27 20:47:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063596792545.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |