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查询mysql中文乱码问题
Nov 09 Python
Python 自动补全(vim)
Nov 30 Python
Python利用ansible分发处理任务
Aug 04 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
Feb 06 Python
python 画图 图例自由定义方式
Apr 17 Python
在python里创建一个任务(Task)实例
Apr 25 Python
python如何处理程序无法打开
Jun 16 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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相关资料
2006/10/09 PHP
php 过滤器实现代码
2010/08/09 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
jQuery each()方法的使用方法
2010/03/18 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
小小聊天室Python代码实现
2016/08/17 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python之字典对象的几种创建方法
2020/09/30 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
酒店应聘自荐信
2013/11/09 职场文书
温馨提示标语
2014/06/26 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
Python安装使用Scrapy框架
2022/04/12 Python
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers