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相关推荐

  1. Python调用百度智能云API进行文本情感分析

    Python调用百度智能云API进行文本情感分析 安装SDK 在调用前首先需要通过 pip 安装百度智能云 SDK. 可参考官方文档:https://cloud.baidu.com/doc/OCR/s ...

  2. 如何用python调用百度云接口实例

    python可以通过python+Opencv来实现很多图片变换之类的工作,因为OpenCV库的功能可以说是相当强大,很多功能都可以完成.但是实现起来需要自己造轮子,所以很费时间和精力,我们可以直接学 ...

  3. python调用百度翻译-Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  4. Python调用百度通用翻译api

    Python调用百度通用翻译api 首先 首先 首先需要先去百度翻译api官网注册成为开发者,然后申领一下通用翻译的appid和密钥. 附上代码,默认为源语言自动识别,效果感觉不是太好,目标语言默认为 ...

  5. python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...

  6. Linux阿里云/腾讯云/百度云服务器安装部署ElasticSearch

    Linux阿里云/腾讯云/百度云服务器安装部署ElasticSearch 一.安装JDK环境 Linux安装JDK环境不会的参考我写的这篇文章: https://blog.csdn.net/qq_41 ...

  7. Java腾讯会议api接口,创建会议、查询会议,取消会议调用实例,以及踩过的坑

    最近公司需要做一个腾讯会议API的对接,经过查看官方文档和腾讯相关技术人员周旋~~以及不断踩坑,终于在我的不懈努力下,成功将API接口调通了 腾讯会议API接口文档:https://cloud.ten ...

  8. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  9. Python——调用百度AI实现图片上文字识别

    Python--调用百度AI实现图片上文字识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用glob库 调用AipOcr库识别文字 可能会遇到的问题 批量操作 简介 Python免费调用百度 ...

最新文章

  1. org 07c00h的原因
  2. Maven(八)Eclipse创建Web项目(复杂方式)
  3. Opencms安装和配置
  4. ansible基本模块使用
  5. “知识图谱+”系列:知识图谱+强化学习
  6. 管理学习笔记(1)——高效团队的五大关键
  7. 问题 C: 判断三角形的性质
  8. java模板引擎哪个好_浅谈Java模板引擎性能对比
  9. 计算机导论课程论文标题大全,计算机导论课程论文选题范文 计算机导论课程论文题目怎样定...
  10. PI控制器概念 笔记
  11. Ubuntu14.04 学习一:adobe Flash 下载和安装
  12. 谷歌账号Gmail邮箱修改密码提示需要手机设备验证码如何处理
  13. ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
  14. notepad中html自动补齐和标签,在Notepad ++中显示不匹配的html标签(Show unmatched html tags in Notepad++)...
  15. golang 入门--定义数组的方式
  16. 史上最小白之Bert详解
  17. android expandablelistview横向,Android ExpandableListView使用小结(一)
  18. 自然语言处理—初始自然语言处理技术—走进自然语言处理
  19. 操作系统的类型与结构---定义与分类
  20. javaScript-关于上下文、作用域、call、apply

热门文章

  1. LinkedList 方法吐血大汇总
  2. Autodesk 3ds Max 2017 中文正确注册的姿势
  3. 为什么总让眼泪陪我过夜
  4. QMT交易接口定义交易账户全局信息类
  5. CentOS 7.2 64位 安装hadoop之后无法正常启动hdfs问题
  6. Android调整屏幕亮度和改变屏幕亮度调整模式的代码
  7. 2007年度最有趣味的BT网站大全
  8. 用python自动爬取海贼王漫画推送kindle
  9. 2. Transformer相关的原理(2.4. 图解GPT)
  10. java计算机毕业设计高校社区生鲜配送系统源码+mysql数据库+系统+lw文档+部署