python实现连续图文识别


Posted in Python onDecember 18, 2018

本文实例为大家分享了python实现连续图文识别的具体代码,供大家参考,具体内容如下

1.工具:

1.1 剪切板。我下载并安装使用的是剪切板查看器(clipbrd.exe),成功后显示“剪贴薄查看器.exe”

1.2  截图工具并设置热键。保存图片键和退出键可任意设置,注意不能同其它热键冲突。我使用的是微信截图,进入设置---进入快捷按键---把截取屏幕键改为F1。

1.3 Python 3.x,Windows环境

1.4 注册百度云帐号,获取Appid  API Key   Secret Key 

1.5 新建文件夹。我建的名叫‘图文识别'文件夹(C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\图文识别)

1.6 ‘图文识别'文件夹下,有3个.py文件,分别是:screenshot.py  baiduap.py  getText.py;有1个配置文本文件是password.ini;有个图像文件是Picture.png。

1.7 需要有以下第三方库:keyboard、PIL、aip、configparser、win32con、win32clipboard。

2 完整代码:

2.1 screenshot.py是主程序,可独立运行,主要功能为截图并保存。

""" 本程序可独立运行,主要功能是截图并保存"""
import sys
from time import sleep
import keyboard
from PIL import ImageGrab #pillow
from baiduap import BaiDuAPI
from getText import GetText
 
def screenShot():
   """用于截图并保存"""
   print('请按F1开始截图')
   if keyboard.wait(hotkey='f1')==None:
     print('复制剪切板的图片,请按Ctrl+b,不复制继续截图')
     if keyboard.wait(hotkey='Ctrl+b')==None:
        sleep(0.02) #防止获取的是上一张截图
        #复制剪贴板里面的图片
        im=ImageGrab.grabclipboard()
        im.save('Picture.png')
 
if __name__=='__main__':
   baiduapi=BaiDuAPI('password.ini')
   for _ in range(sys.maxsize):
     screenShot()
     texts=baiduapi.picture2Text('Picture.png') 
     print(texts)
     GetText.setText(texts)  #剪贴板剪贴
     sleep(0.02)
     GetText.getText()
     print('退出请按Ctrl+x') 
     if keyboard.wait(hotkey='Ctrl+x')==None:
        name=input('请输入保存图像识别文字文件名:')
        f=open(name+'.txt','w')
        f.write(texts)
        f.close()
        break

2.2 baiduap.py 程序可独立使用,主要功能是图像文字识别。

from aip import AipOcr
import configparser
 
class BaiDuAPI:
   """图片文字识别"""
   #初识化方法
   def __init__(self,filePath): #self 就是BaiDuAPI()
     #读取工单信息
     target=configparser.ConfigParser()
     target.read(filePath)
     app_id=target.get('我的工单','App_ID')
     app_key=target.get('我的工单','App_KEY')
     secret_key=target.get('我的工单','SECRET_KEY')
     self.client=AipOcr( app_id, app_key,secret_key)
 
   def picture2Text(self,filePath):
     #读取图片
     image=self.getPicture(filePath)
     texts=self.client.basicGeneral(image)
     #print(texts['words_result'])
     allTexts=''
     for word in texts['words_result']:
        allTexts=allTexts+word.get('words','')
     return allTexts
    
   @staticmethod  
   def getPicture(filePath):
     with open(filePath,'rb') as fp:
        return fp.read()
 
if __name__=='__main__':
   baiduapi=BaiDuAPI('password.ini')
   print(baiduapi.picture2Text('Picture.png'))

2.3 getText.py 程序,主要功能是把图像识别出来的文字,保存到剪切板。

import sys 
import os.path 
import win32clipboard as w  
import win32con 
 
class GetText:
   
   def getText():#读取剪切板 
     w.OpenClipboard() 
     d = w.GetClipboardData(win32con.CF_TEXT) 
     w.CloseClipboard() 
     return d 
   def setText(aString):#写入剪切板 
     w.OpenClipboard() 
     w.EmptyClipboard() 
     w.SetClipboardText(aString) 
     w.CloseClipboard() 
 
if __name__=='__main__': 
   GetText.setText('布衣弓长')
   GetText.getText()

2.4 password.ini 文件,用记事本编写,把百度云获取的相关信息填进去。内容是:

[我的工单];节
App_ID=151313**
App_KEY=1V2LlBhLUYaHu2Y9*******
SECRET_KEY=fGufC1CbiZ0tw1imTGoIsaGO******

3.运行。启动qq和剪贴薄查看器.exe,在python环境下运行screenshot.py。

经实测:识别率高,能快速抓取多图,但每运行一次程序,只能识别保存在Picture.png文件里图像的文字。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3遍历目录树实现方法
May 22 Python
python制作一个桌面便签软件
Aug 09 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
python 多维高斯分布数据生成方式
Dec 09 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Python 实现将某一列设置为str类型
Jul 14 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 #Python
Python列表list排列组合操作示例
Dec 18 #Python
python实现二维插值的三维显示
Dec 17 #Python
Python实现分段线性插值
Dec 17 #Python
Python 获取主机ip与hostname的方法
Dec 17 #Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 #Python
python样条插值的实现代码
Dec 17 #Python
You might like
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
js 控制页面跳转的5种方法
2013/09/09 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
500行python代码实现飞机大战
2020/04/24 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
学前班教师的自我鉴定
2013/12/05 职场文书
考试诚信承诺书
2014/05/23 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
离婚协议书格式
2014/11/21 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫
ubuntu下常用apt命令介绍
2022/06/05 Servers