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中为feedparser设置超时时间避免堵塞
Sep 28 Python
给Python初学者的一些编程技巧
Apr 03 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
python的socket编程入门
Jan 29 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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的异常处理类Exception的使用及说明
2012/06/13 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
深入探讨前端框架react
2015/12/09 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
一看就懂得Python的math模块
2018/10/21 Python
Python补齐字符串长度的实例
2018/11/15 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python中的逆序遍历实例
2019/12/25 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
经典c++面试题五
2014/12/17 面试题
自我鉴定写作要点
2014/01/17 职场文书
个人自我剖析材料
2014/02/07 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
学生党员检讨书范文
2014/12/27 职场文书
幼师大班个人总结
2015/02/13 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
tomcat下部署jenkins的方法
2022/05/06 Servers