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 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
python使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
Python 基础之字符串string详解及实例
Apr 01 Python
python保存网页图片到本地的方法
Jul 24 Python
python快排算法详解
Mar 04 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
Python实现自动访问网页的例子
Feb 21 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
分析Python list操作为什么会错误
Nov 17 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 dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
看了就知道什么是JSON
2007/12/09 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
python 解析html之BeautifulSoup
2009/07/07 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
高级运动鞋:GREATS
2019/07/19 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
办理护照介绍信
2014/01/16 职场文书
大二学习计划书范文
2014/04/27 职场文书
给校长的建议书300字
2014/05/16 职场文书
品牌服务方案
2014/06/03 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
导游词之山东八大关
2019/12/18 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
vue+iview实现手机号分段输入框
2022/03/25 Vue.js