对图片中的表格进行识别,并转换成excel文件(python、小软件)(批量)
文章目录
- 一、python 调用腾讯接口
- 二、python+百度API识别图片中表格并保存到excel
- 三、小马识图识别工具
一、python 调用腾讯接口
识别效果就比较拉胯,这个SecretId 和 SecretKey 需要你自己去申请,不难,去腾讯云捣鼓吧。
https://www.cnblogs.com/littlefatsheep/p/11024505.html
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()# 获取文件夹中的图片名
path = 'C:\\Users\\ABC\\Desktop\\tables'#指定文件所在路径
filetype ='.jpg'#指定文件类型
def get_filename(path,filetype):name =[]final_name = []for root,dirs,files in os.walk(path):for i in files:if filetype in i:name.append(i.replace(filetype,''))final_name = [item + filetype for item in name]return final_namepictures = get_filename(path,filetype)
SecretId = 'xxxxxxxxxxx'
SecretKey = 'xxxxxxxxxxx'
for pic in pictures:excelFromPictures(pic,SecretId,SecretKey)print("已经完成" + pic + "的提取.")
二、python+百度API识别图片中表格并保存到excel
调用百度的表格识别接口,效果就还真不错,虽然有一些小错误,但整体是可以的,只要图片中的表格标准,就基本都能精准识别出来。
同样的,需要去百度申请 APP_ID=‘xxxx’ 、API_KEY=‘xxxx’、 SECRET_KEY=‘xxxxx’
python+百度API识别图片中表格并保存到excel
import pandas as pd
import numpy as np
import re
# 图片识别
from aip import AipOcr
# 时间模块
import time
# 网页获取
import requests
# 操作系统接口模块
import os
image_path=''
# 获取文件夹中所有图片def get_image():images=[] # 存储文件夹内所有文件的路径(包括子目录内的文件)for root, dirs, files in os.walk(image_path):path = [os.path.join(root, name) for name in files]images.extend(path)return imagesdef Image_Excel(APP_ID,API_KEY,SECRET_KEY):# 调用百度AI接口client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# 循环遍历文件家中图片images=get_image()for image in images:# 以二进制方式打开图片img_open=open(image,'rb')# 读取图片img_read = img_open.read()# 调用表格识别模块识别图片table = client.tableRecognitionAsync(img_read)# 获取请求IDrequest_id = table['result'][0]['request_id']#获取表格处理结果result = client.getTableRecognitionResult(request_id)# 处理状态是“已完成”,获取下载地址while result['result']['ret_msg'] != '已完成':time.sleep(2) # 暂停2秒再刷新result = client.getTableRecognitionResult(request_id)download_url = result['result']['result_data']print(download_url)# 获取表格数据excel_data = requests.get(download_url)# 根据图片名字命名表格名称xlsx_name = image.split(".")[0] + ".xls"# 新建excel文件xlsx = open(xlsx_name, 'wb')# 将数据写入excel文件并保存xlsx.write(excel_data.content)if __name__=='__main__':image_path ='C:\\Users\\ABC\\Desktop\\市场行情截图\\市场行情截图\\'APP_ID='xxxx'API_KEY='xxxx'SECRET_KEY='xxxxx'Image_Excel(APP_ID,API_KEY,SECRET_KEY)
配合python,对识别的结果在处理一遍
比如我这里,是针对我的图片识别结果,对一些错误进行处理
# --------------------------------------------------------------------2021年
path = 'C:\\Users\\ABC\\Desktop\\截图\\截图\\2021\\'#指定文件所在路径
filetype ='.xls'#指定文件类型
def get_filename(path,filetype):name =[]final_name = []for root,dirs,files in os.walk(path):for i in files:if filetype in i:name.append(i.replace(filetype,''))final_name = [item +'.xls' for item in name]return final_namelli = get_filename(path,filetype)writer = pd.ExcelWriter('result.xlsx')
for k in lli:print('开始',k)df = pd.read_excel(path+k)# 删除最后行(最后一行数据不完整)df.drop([df.shape[0]-1],inplace=True)# 把if df.iloc[0,3]=='':df.drop([0,1],inplace=True)df.index = range(df.shape[0]) df_yao = df.iloc[4:9,:]# 删除最后的空列for i in df_yao.columns[::-1]:if df_yao[i].isnull().sum()==df_yao.shape[0]:df_yao.drop([df_yao.columns[-1]],axis=1,inplace=True)else:break# 定义列名if df_yao.iloc[0,0]=='银票':df_yao.columns = ['票据类型','票据介质','期限品种','最新利率','加权平均利率','最高利率','最低利率','开盘利率','收盘利率','前收盘利率','前加权平均利率','成交量']if df_yao.iloc[0,0]=='电票':df_yao.columns = ['票据介质','期限品种','最新利率','加权平均利率','最高利率','最低利率','开盘利率','收盘利率','前收盘利率','前加权平均利率','成交量']# 处理 票据类型 错误(只处理银票、电票)if '票据类型' in df_yao.columns:if '银票电票' in df_yao['票据类型'].unique().tolist():df_yao['票据介质'][df_yao['票据类型']=='银票电票'] = '电票'df_yao['票据类型'][df_yao['票据类型']=='银票电票'] = '银票'# 处理 票据介质 错误 df_yao['期限品种'][~df_yao['票据介质'].isin(['纸票','电票'])]=df_yao[~df_yao['票据介质'].isin(['纸票','电票'])]['票据介质'].apply(lambda x:re.sub('[\u4e00-\u9fa5]', '', x))df_yao['票据介质'][~df_yao['票据介质'].isin(['纸票','电票'])]=df_yao[~df_yao['票据介质'].isin(['纸票','电票'])]['票据介质'].str.slice(0, 2)if len(df_yao['票据介质'].unique().tolist())==1:df_yao.to_excel(excel_writer=writer,sheet_name=k.replace('.xls',''),index=False)print('完成',k)
writer.save()
writer.close()
三、小马识图识别工具
在网上找一个小软件,可以批量的识别图片中的表格,并转换为想要的格式,但是效率不高,我试过100张图片,大概需要15分钟。其识别效果还行,但还是有一些会是错,比如表头容易混在一起,我看了一下,其实现猜测也是调用的百度接口。
下载地址:
https://www.onlinedown.net/soft/1229664.htm
识别出来以后,可以再用Python进行处理
对图片中的表格进行识别,并转换成excel文件(python、小软件)(批量)相关推荐
- 怎么把excel文件转成dta_如何将excel表格数据转化为dta格式-怎么把dat文件转换成Excel文件,里面的数据格式要......
dat文件怎么转换成excel 1.首先点击excel表格左上角的"文件"选项. 2.在打开的页面中点击"另存为"选项并点击其中的"浏览"按 ...
- 怎么把PDF转换成Excel文件?分享两种简单好用的转换方法
怎么把PDF文件转换成Excel文件呢?大家在日常的办公过程中,传输文件大多数都会使用PDF文件格式,有时候出于工作的需要,在我们接收到一份PDF文件时,要求我们把PDF文件做成Excel表格,我们如 ...
- 如何把图片转换成excel文件?
如何制作Excel表格是一项必备技能,在工作中经常需要的.而我们整理经常表格,难免会遇到一些图片表格中的信息需要整理.如果要整理就需要手动输入,这不仅要花很多时间,还要很容易出错.想要快速的整理出这些 ...
- pdf转换成excel文件_将PDF文件转换为Excel
pdf转换成excel文件 When I got back to my office after a recent vacation, there was an email from Una, abo ...
- 在线JSON转换成Excel文件工具
在线JSON转换成Excel文件工具 在线JSON转换成Excel文件工具 本工具可以将JSON数据在浏览器本地转换成Excel支持一键下载. JSON:(JavaScript Object Nota ...
- 怎么把pdf转换成excel文件?
怎么把pdf转换成excel文件?互联网时代的今天,许多办公技巧都有了翻天覆地的变化,其中尤以pdf.excel.word.图片几种文件的相互转换变化较多.过去的办公文员们无论是把pdf转换成exce ...
- PDF文件可以转换成Excel文件吗
文件的转换也是我们最常见的了,那么我们在遇到这类问题的时候可以怎么去处理呢?其实是可以借助一些软件来帮助我们进行文件的转换,下面就来给大家介绍一下吧. 为了将PDF文件转换成Excel文件,我们需要使 ...
- PDF转换成excel的绿色版软件推荐
工作中需要将满是表格的PDF转换成excel该怎么办呢?一搜发现出来好多结果. 结果中有好多绿色版软件, 不知道怎么选择. 的确,现在的社会无论是哪类东西竞争都很强烈,随便搜一个产品就会有很多结果,绿 ...
- json转换成excel在线js小工具分享【不限制大小】
起因 我们在工作过程中,偶尔会有需求是把json转换成excel的需求.一般这个时候,我们会跑到度娘那,在输入框中输入:"json excel".然后,你会发现这个一个网站&quo ...
最新文章
- Flyweight 享元模式
- HTML5对音频的支持
- 小学期学习记录(一)
- 关于考研一些问题的思考2017-12-23
- 最炫国漫《雾山五行》用 Python 了解一下到底有多优秀
- redis——redis主从复制
- SQL对字符串进行排序
- 查找算法之一 顺序查找
- stm32 某个io引脚不能拉高_【stm32f407】IO引脚复用和映射
- Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)...
- CentOS6.5_x64安装VNCserver
- 04 分布式文件系统以及MapReduce入门程序
- 3D动作手游的辅助瞄准算法(一)
- 100个软硬件都要懂的示波器基础知识
- 最新Java资源整理,大多数人的选择
- 工业机器人实训实验平台
- Oculus Rift正式发售,准备好开始迈向VR时代
- MVC 音乐商店 第 8 部分: 购物车与 Ajax 更新
- 参加过知了堂成都Java培训后,需要多久能达到年薪十万?
- 我的世界服务器自定义教程,我的世界服务器