系统:Linux Mint 18.3 xfce 64bit

参考链接:http://blog.csdn.net/u012236875/article/details/74726035
根据参考链接的代码,简单做了个GUI界面的python程序。

关于图片转换,网上还有很多关于使用pytesseract的例子,但自己试了一下中文识别率并没有百度提供的文字识别接口高,因此使用百度的API。本例子是在linux下实现的,调用了linux下的一个截图工具scrot ,如果是windows下可以参考网上用python实现的截图功能。

(0) pip install baidu-aip

(1)使用qtdesigner设计UI界面,类似下图

(2)去百度云(不是百度网盘)注册后创建一个文字识别应用,创建后会有APPID,API key以及密钥等信息,接下来要用

(3)参考下列代码,其中截图功能使用scrot,API参数还是硬编程

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: ouening使用PyQt5调用百度API构建图片转文字的GUI程序
"""import sys
import os
import time
from PyQt5 import QtCore, QtGui, uic
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QMessageBox
from PyQt5.QtWidgets import QFileDialog, QAction, qApp
from PyQt5.QtGui import QIcon, QPixmap
import pygame
#from PIL import ImageGrab
from aip import AipOcr  # 导入百度API## 百度API参数
APP_ID = '9851066'
API_KEY = 'LUGBatgyRGoerR9FZbV4SQYk'
SECRET_KEY = 'fB2MNz1c2UHLTximFlC4laXPg7CVfyjV'
# 初始化文字识别
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
options = {'detect_direction':'true','language_type':'CHN_ENG'}# 使用QtCreator建立的ui文件路径
qtCreatorFile = "/home/kindy/Files/python/gui/pyqt/baiduapi-ocr.ui"
# 使用uic加载
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)# 读取图片
def getImageBytes(filename):with open(filename,'rb') as fp:return fp.read()class MyApp(QMainWindow, Ui_MainWindow):def __init__(self):QMainWindow.__init__(self)Ui_MainWindow.__init__(self)super().__init__()self.initUI()       # 调用自定义的UI初始化函数initUI()def initUI(self):'''Initialize the window's UI'''self.setupUi(self)self.setWindowTitle("图片转文字GUI程序")self.setWindowIcon(QIcon("/home/kindy/Files/python/gui/pyqt/rocket.png"))   # 设置图标,linux下只有任务栏会显示图标self.initMenuBar()      # 初始化菜单栏self.initToolBar()      # 初始化工具栏self.initButton()       # 初始化按钮self.show()             # 显示def initMenuBar(self):'''初始化菜单栏'''menubar = self.menuBar()#self.actionExit.triggered.connect(qApp.quit)    # 按下菜单栏的Exit按钮会退出程序#self.actionExit.setStatusTip("退出程序")         # 左下角状态提示#self.actionExit.setShortcut('Ctrl+Q')           # 添加快捷键exitAct = QAction(QIcon('/home/kindy/Files/python/gui/pyqt/exit.png'), 'Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.triggered.connect(qApp.quit)fileMenu = menubar.addMenu('&File')fileMenu.addAction(exitAct)fileMenu = menubar.addMenu('&Help')def initToolBar(self):'''初始化工具栏创建一个QAction实例exitAct,然后添加到designer已经创建的默认的工具栏toolBar里面'''exitAct = QAction(QIcon('/home/kindy/Files/python/gui/pyqt/exit.png'), 'Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.triggered.connect(qApp.quit)self.toolBar.addAction(exitAct)def initButton(self):'''Initialize the ButtonsbtnBrowse: browse the file explorerbtnPlay: begin to play music using module pygamebtnStop: stop playing music'''self.btnBrowse.clicked.connect(self.browserButton_callback) # 按下按钮调用回调函数self.btnBrowse.setToolTip("浏览需要转换的文件")                     # 设置提示#self.btnBrowse.setStyleSheet("{border-image: url(/home/kindy/Files/python/gui/pyq/play.ico);}") # 此代码没有效果self.btnScreen.clicked.connect(self.screenButton_callback)      # 一旦按下按钮,连接槽函数进行处理self.btnScreen.setToolTip("截取屏幕文字")self.btnConvert.clicked.connect(self.convertButton_callback)self.btnConvert.setToolTip("转换图片中的文字")def browserButton_callback(self):global fileName1    # 设置全局fileName1, filetype = QFileDialog.getOpenFileName(self,"选取图片文件","/home/kindy/图片","All Files (*);;Music Files (*.png)")   #设置文件扩展名过滤,注意用双分号间隔self.filePath.setText(fileName1)def screenButton_callback(self):filename = r'/home/kindy/图片/temp.png'start = time.time()os.system("scrot -s %s"%(filename))res = aipOcr.webImage(getImageBytes(filename))txt=res['words_result']text = str()for i in range(len(txt)):#scr.insert(tk.INSERT, str(txt[i]['words']) + '\n')#self.plainTextEdit.setPlainText(str(txt[i]['words']) + '\n')text += (str(txt[i]['words'])+ '\n')self.plainTextEdit.setPlainText(text)#print(text)end = time.time()self.plainTextEdit.setStatusTip("图片文字转换时间:%.2fs"%(end-start))def convertButton_callback(self, filename):'''调用百度API进行文字识别'''start = time.time()res = aipOcr.webImage(getImageBytes(fileName1))txt=res['words_result']text = str()for i in range(len(txt)):#scr.insert(tk.INSERT, str(txt[i]['words']) + '\n')#self.plainTextEdit.setPlainText(str(txt[i]['words']) + '\n')text += (str(txt[i]['words'])+ '\n')self.plainTextEdit.setPlainText(text)print(text)end = time.time()self.plainTextEdit.setStatusTip("图片文字转换时间:%.2fs"%(end-start))#def closeEvent(self, event):#reply = QMessageBox.question(self, 'Message',#"Are you sure to quit?", QMessageBox.Yes |#QMessageBox.No, QMessageBox.No)#if reply == QMessageBox.Yes:#event.accept()#else:#event.ignore()if __name__ == "__main__":app = QApplication(sys.argv)window = MyApp()sys.exit(app.exec_())

效果如下:

截图功能调用linux系统的截图软件scrot ,转换时间和网络有关,也和转化的文字图片有关(不过感觉听慢的。。。,先暂时用着先)

Linux python PyQt5调用百度API实现图片文字转换相关推荐

  1. Android Studio调用百度API(图片文字识别)

    1.登录百度AI平台(https://ai.baidu.com/),下载license文件 包名填写内容: 下载好的文件夹内包含四个文件 (OCR-Android-SDK.md文件里有使用说明) (1 ...

  2. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  3. python 百度ocr安装_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  4. python通过调用百度api实现语音识别(超详细)

    python通过调用百度api实现语音识别(超详细) 2021.04.18:该文章是在18年,初学Python时写的,所以功能仅限于当时可用,至于现在(貌似依然可用)和以后就不确定了.完整的demo也 ...

  5. 调用百度API实现图像风格转换

    目录 1.作者介绍 2.基本概念 2.1 人工智能云服务与百度智能云 2.2 图像风格转换 3.调用百度API实现图像风格转换 3.1 配置百度智能云平台 3.2 环境配置 3.3 完整代码实现 3. ...

  6. html5d调用百度语音,易语言调用百度语音平台实现文字转换语音功能的代码

    调用百度语音平台实现文字转换语音功能 此功能需要加载精易模块5.6 .版本 2 .支持库 wmp9 .程序集 窗口程序集1 .子程序 _试听按钮_被单击 播放器1.地址 = "http:// ...

  7. python aipspeech_Python调用百度API实现语音识别(二)

    咪哥杂谈 本篇阅读时间约为 5 分钟. 1 前言 上一篇文章里,大致介绍了百度官方 api 的一些前置准备工作. 想回顾的同学,可以看完本篇在下面找到历史链接. 今天就来上手实战编码,体验一下代码实现 ...

  8. Python实现调用百度API翻译文字

    调用百度API翻译文字 最近复制别人的代码实现百度API翻译文字,总是报错: {'error_code': '52003', 'error_msg': 'UNAUTHORIZED USER'} 后来发 ...

  9. Java基于百度API的图片文字识别(支持中文,英文和中英文混合)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

最新文章

  1. 怎样使用计算机操作,怎么使用键盘快捷键操作电脑
  2. 百试不爽的30条职场经验(转)
  3. myeclipse怎么如何激活
  4. 【数据结构与算法】之深入解析“穿过迷宫的最少移动次数”的求解思路与算法示例
  5. vue-cli4.0打包之后,页面空白,路由404
  6. PyTorch:Encoder-RNN|LSTM|GRU
  7. 5大网站汇总,搞定新颖的计算机专业毕业设计网站汇总
  8. ug产品摆正高级技巧_UG8.0工件怎么摆正角度教程?
  9. origin matlab调用,origin与matlab使用教程
  10. GStreamer的Decodebin插件
  11. epcs1s是epcs1系列的么_串行FLASH配置芯片(EPCS1或EPCS4)数据手册.pdf
  12. 慕课moocpython答案_中国大学慕课moocPython编程基础作业答案
  13. Xilinx GTX/GTH时钟篇(7系列)
  14. PHP 7.1 新特性
  15. MathType找不到dll文件,原来要这样解决
  16. SpringMVC工作流程
  17. 泛微ecology nginx+resin集群部署手册
  18. 各个版本Xcode 下载
  19. 泽雷随:择善而从;山风蛊:拯弊治乱
  20. 不要被欲望冲昏头脑而迷失方向,不要被工作撕碎心情打破计划

热门文章

  1. 沈阳维修可视对讲服务器维修,可视对讲怎么维修 可视对讲维修方法介绍【图文】...
  2. 安徽计算机一级2016考试试题,2016最新计算机一级考试试题题库操作题
  3. 【笔记】软件测试02——移动测试基础02
  4. 爆款视频怎么做?这里或许有答案
  5. 意大利语1000句实用语
  6. Kotlin系列之Kotlin初体验
  7. 南京NLP算法岗中小厂汇总
  8. 亲测可用fiddler手机抓包配置代理后没有网络
  9. 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现
  10. Advanced Exploit Techique之--frame faking技术http://ntbgyz.com/articles/200602/851.html