python调用(百度云、腾讯云)API接口表格识别并保存为excel
Python表格识别
图像识别具有较高的商业价值,本节主要通过python调用(百度云、腾讯云)API接口表格识别并保存为excel分析表格识别的能力;
提示:需分别申请密钥,在相应位置添加自己密钥即可;
文章目录
- Python表格识别
- 前言
- 一、图像识别应用分析
- 二、百度云表格识别测试
- 三、腾讯云表格识别测试
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、图像识别应用分析
背景:
1、现场每天有大量的手工报表需要汇总;
2、人员手动将报表录入电脑耗费大量时间;
3、在信息量非常大的时代,图片、PDF等格式的信息占很大部分,但是我们不能直接提取其中的信息;
近年来,在深度学习的加持下,OCR(Optical Character Recognition,光学字符识别)的可用性不断提升,大量用户借助OCR软件,从图片中提取文本信息。然而对于表格场景,应用还未普及。
步骤:
1、通过高拍仪或扫描仪拍照;
2、读入图片灰度化(将彩色图片变为灰色图片);
3、图片二值化(将图片变为只有黑白两种颜色);
4、识别出表格的横线、竖线(如果图片不够清晰可以加入腐蚀、膨胀等);
5、得到横竖线的交点,进而得到单元格坐标;
6、通过坐标提取单元格图像,进而用pytesseract识别文字;
7、将得到的信息写入excel;
二、百度云表格识别测试
通过调用百度云识别指定文件夹下所有图片表格,将图片内容输出为excel文本格式,并将输出文件保存到指定文件夹下。
腾讯云:https://cloud.baidu.com/
# encoding: utf-8
import os
import sys
import requests
import time
import tkinter as tk
from tkinter import filedialog
from aip import AipOcr#转载来源
#https://www.cnblogs.com/mrlayfolk/p/12630128.html
#代码运行环境:win10 python3.7
#需要aip库,使用pip install baidu-aip即可# 定义常量
APP_ID = 'APP_ID'
API_KEY = 'API_KEY'
SECRET_KEY = 'SECRET_KEY'
# 初始化AipFace对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# 读取图片
def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()#文件下载函数
def file_download(url, file_path):r = requests.get(url)with open(file_path, 'wb') as f:f.write(r.content)if __name__ == "__main__":root = tk.Tk()root.withdraw()data_dir = filedialog.askdirectory(title='请选择图片文件夹') + '/'result_dir = filedialog.askdirectory(title='请选择输出文件夹') + '/'num = 0for name in os.listdir(data_dir):print ('{0} : {1} 正在处理:'.format(num+1, name.split('.')[0]))image = get_file_content(os.path.join(data_dir, name))res = client.tableRecognitionAsync(image)# print ("res:", res)if 'error_code' in res.keys():print ('Error! error_code: ', res['error_code'])sys.exit()req_id = res['result'][0]['request_id'] #获取识别ID号for count in range(1, 20): #OCR识别也需要一定时间,设定10秒内每隔1秒查询一次res = client.getTableRecognitionResult(req_id) #通过ID获取表格文件XLS地址print(res['result']['ret_msg'])if res['result']['ret_msg'] == '已完成':break #云端处理完毕,成功获取表格文件下载地址,跳出循环else:time.sleep(1)url = res['result']['result_data']xls_name = name.split('.')[0] + '.xls'file_download(url, os.path.join(result_dir, xls_name))num += 1print ('{0} : {1} 下载完成。'.format(num, xls_name))time.sleep(1)
三、腾讯云表格识别测试
通过调用腾讯云识别指定文件夹下所有图片表格,将图片内容输出为excel文本格式,并将输出文件保存到指定文件夹下。
腾讯云:https://cloud.tencent.com/
代码如下(示例):
# from PIL import Image
# import pytesseract
##导入通用包
import numpy as np
import pandas as pd
import os
import json
import re
import base64
import xlwings as xw
##导入腾讯AI api
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models#定义函数
def excelFromPictures(picture,SecretId,SecretKey):try:with open(picture,"rb") as f:img_data = f.read()img_base64 = base64.b64encode(img_data)cred = credential.Credential(SecretId, SecretKey) #ID和Secret从腾讯云申请httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = ocr_client.OcrClient(cred, "ap-shanghai", clientProfile)req = models.TableOCRRequest()params = '{"ImageBase64":"' + str(img_base64, 'utf-8') + '"}'req.from_json_string(params)resp = client.TableOCR(req)# print(resp.to_json_string())except TencentCloudSDKException as err:print(err)##提取识别出的数据,并且生成jsonresult1 = json.loads(resp.to_json_string())rowIndex = []colIndex = []content = []for item in result1['TextDetections']:rowIndex.append(item['RowTl'])colIndex.append(item['ColTl'])content.append(item['Text'])##导出Excel##ExcelWriter方案rowIndex = pd.Series(rowIndex)colIndex = pd.Series(colIndex)index = rowIndex.unique()index.sort()columns = colIndex.unique()columns.sort()data = pd.DataFrame(index = index, columns = columns)for i in range(len(rowIndex)):data.loc[rowIndex[i],colIndex[i]] = re.sub(" ","",content[i])writer = pd.ExcelWriter("../tables/" + re.match(".*\.",f.name).group() + "xlsx", engine='xlsxwriter')data.to_excel(writer,sheet_name = 'Sheet1', index=False,header = False)writer.save()#xlwings方案 # wb = xw.Book()# sht = wb.sheets('Sheet1')# for i in range(len(rowIndex)):# sht[rowIndex[i],colIndex[i]].value = re.sub(" ",'',content[i])# wb.save("../tables/" + re.match(".*\.",f.name).group() + "xlsx")# wb.close()if not ('tables') in os.listdir():os.mkdir("./tables/")os.chdir("./image2/")
pictures = os.listdir()
for pic in pictures:excelFromPictures(pic,"SecretId","SecretKey")print("已经完成" + pic + "的提取.")
总结
有不对的地方希望大家可以评论留言,帮助大家不迷路!!
期待大家的加入,一起学习,一起交流!!。
python调用(百度云、腾讯云)API接口表格识别并保存为excel相关推荐
- Python调用百度智能云API进行文本情感分析
Python调用百度智能云API进行文本情感分析 安装SDK 在调用前首先需要通过 pip 安装百度智能云 SDK. 可参考官方文档:https://cloud.baidu.com/doc/OCR/s ...
- 如何用python调用百度云接口实例
python可以通过python+Opencv来实现很多图片变换之类的工作,因为OpenCV库的功能可以说是相当强大,很多功能都可以完成.但是实现起来需要自己造轮子,所以很费时间和精力,我们可以直接学 ...
- python调用百度翻译-Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- Python调用百度通用翻译api
Python调用百度通用翻译api 首先 首先 首先需要先去百度翻译api官网注册成为开发者,然后申领一下通用翻译的appid和密钥. 附上代码,默认为源语言自动识别,效果感觉不是太好,目标语言默认为 ...
- python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值
本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...
- Linux阿里云/腾讯云/百度云服务器安装部署ElasticSearch
Linux阿里云/腾讯云/百度云服务器安装部署ElasticSearch 一.安装JDK环境 Linux安装JDK环境不会的参考我写的这篇文章: https://blog.csdn.net/qq_41 ...
- Java腾讯会议api接口,创建会议、查询会议,取消会议调用实例,以及踩过的坑
最近公司需要做一个腾讯会议API的对接,经过查看官方文档和腾讯相关技术人员周旋~~以及不断踩坑,终于在我的不懈努力下,成功将API接口调通了 腾讯会议API接口文档:https://cloud.ten ...
- python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码
百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...
- Python——调用百度AI实现图片上文字识别
Python--调用百度AI实现图片上文字识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用glob库 调用AipOcr库识别文字 可能会遇到的问题 批量操作 简介 Python免费调用百度 ...
最新文章
- org 07c00h的原因
- Maven(八)Eclipse创建Web项目(复杂方式)
- Opencms安装和配置
- ansible基本模块使用
- “知识图谱+”系列:知识图谱+强化学习
- 管理学习笔记(1)——高效团队的五大关键
- 问题 C: 判断三角形的性质
- java模板引擎哪个好_浅谈Java模板引擎性能对比
- 计算机导论课程论文标题大全,计算机导论课程论文选题范文 计算机导论课程论文题目怎样定...
- PI控制器概念 笔记
- Ubuntu14.04 学习一:adobe Flash 下载和安装
- 谷歌账号Gmail邮箱修改密码提示需要手机设备验证码如何处理
- ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
- notepad中html自动补齐和标签,在Notepad ++中显示不匹配的html标签(Show unmatched html tags in Notepad++)...
- golang 入门--定义数组的方式
- 史上最小白之Bert详解
- android expandablelistview横向,Android ExpandableListView使用小结(一)
- 自然语言处理—初始自然语言处理技术—走进自然语言处理
- 操作系统的类型与结构---定义与分类
- javaScript-关于上下文、作用域、call、apply
热门文章
- LinkedList 方法吐血大汇总
- Autodesk 3ds Max 2017 中文正确注册的姿势
- 为什么总让眼泪陪我过夜
- QMT交易接口定义交易账户全局信息类
- CentOS 7.2 64位 安装hadoop之后无法正常启动hdfs问题
- Android调整屏幕亮度和改变屏幕亮度调整模式的代码
- 2007年度最有趣味的BT网站大全
- 用python自动爬取海贼王漫画推送kindle
- 2. Transformer相关的原理(2.4. 图解GPT)
- java计算机毕业设计高校社区生鲜配送系统源码+mysql数据库+系统+lw文档+部署