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 相关文章推荐
Python使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
SQLite3中文编码 Python的实现
Jan 11 Python
基于Django用户认证系统详解
Feb 21 Python
Python内存读写操作示例
Jul 18 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
Python 在函数上添加包装器
Jul 28 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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教程 插件机制在PHP中实现方案
2012/11/02 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Prototype String对象 学习
2009/07/19 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
python 读取修改pcap包的例子
2019/07/23 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
np.random.seed() 的使用详解
2020/01/14 Python
Django ORM filter() 的运用详解
2020/05/14 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
python如何调用php文件中的函数详解
2020/12/29 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
银行演讲稿范文
2014/01/03 职场文书
装修活动策划方案
2014/08/27 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
伏羲庙导游词
2015/02/09 职场文书
城管年度个人总结
2015/02/28 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL