文章目录

  • 一、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、小软件)(批量)相关推荐

  1. 怎么把excel文件转成dta_如何将excel表格数据转化为dta格式-怎么把dat文件转换成Excel文件,里面的数据格式要......

    dat文件怎么转换成excel 1.首先点击excel表格左上角的"文件"选项. 2.在打开的页面中点击"另存为"选项并点击其中的"浏览"按 ...

  2. 怎么把PDF转换成Excel文件?分享两种简单好用的转换方法

    怎么把PDF文件转换成Excel文件呢?大家在日常的办公过程中,传输文件大多数都会使用PDF文件格式,有时候出于工作的需要,在我们接收到一份PDF文件时,要求我们把PDF文件做成Excel表格,我们如 ...

  3. 如何把图片转换成excel文件?

    如何制作Excel表格是一项必备技能,在工作中经常需要的.而我们整理经常表格,难免会遇到一些图片表格中的信息需要整理.如果要整理就需要手动输入,这不仅要花很多时间,还要很容易出错.想要快速的整理出这些 ...

  4. pdf转换成excel文件_将PDF文件转换为Excel

    pdf转换成excel文件 When I got back to my office after a recent vacation, there was an email from Una, abo ...

  5. 在线JSON转换成Excel文件工具

    在线JSON转换成Excel文件工具 在线JSON转换成Excel文件工具 本工具可以将JSON数据在浏览器本地转换成Excel支持一键下载. JSON:(JavaScript Object Nota ...

  6. 怎么把pdf转换成excel文件?

    怎么把pdf转换成excel文件?互联网时代的今天,许多办公技巧都有了翻天覆地的变化,其中尤以pdf.excel.word.图片几种文件的相互转换变化较多.过去的办公文员们无论是把pdf转换成exce ...

  7. PDF文件可以转换成Excel文件吗

    文件的转换也是我们最常见的了,那么我们在遇到这类问题的时候可以怎么去处理呢?其实是可以借助一些软件来帮助我们进行文件的转换,下面就来给大家介绍一下吧. 为了将PDF文件转换成Excel文件,我们需要使 ...

  8. PDF转换成excel的绿色版软件推荐

    工作中需要将满是表格的PDF转换成excel该怎么办呢?一搜发现出来好多结果. 结果中有好多绿色版软件, 不知道怎么选择. 的确,现在的社会无论是哪类东西竞争都很强烈,随便搜一个产品就会有很多结果,绿 ...

  9. json转换成excel在线js小工具分享【不限制大小】

    起因 我们在工作过程中,偶尔会有需求是把json转换成excel的需求.一般这个时候,我们会跑到度娘那,在输入框中输入:"json excel".然后,你会发现这个一个网站&quo ...

最新文章

  1. Flyweight 享元模式
  2. HTML5对音频的支持
  3. 小学期学习记录(一)
  4. 关于考研一些问题的思考2017-12-23
  5. 最炫国漫《雾山五行》用 Python 了解一下到底有多优秀
  6. redis——redis主从复制
  7. SQL对字符串进行排序
  8. 查找算法之一 顺序查找
  9. stm32 某个io引脚不能拉高_【stm32f407】IO引脚复用和映射
  10. Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)...
  11. CentOS6.5_x64安装VNCserver
  12. 04 分布式文件系统以及MapReduce入门程序
  13. 3D动作手游的辅助瞄准算法(一)
  14. 100个软硬件都要懂的示波器基础知识
  15. 最新Java资源整理,大多数人的选择
  16. 工业机器人实训实验平台
  17. Oculus Rift正式发售,准备好开始迈向VR时代
  18. MVC 音乐商店 第 8 部分: 购物车与 Ajax 更新
  19. 参加过知了堂成都Java培训后,需要多久能达到年薪十万?
  20. 我的世界服务器自定义教程,我的世界服务器

热门文章

  1. 快速沃尔什变换(FWT)讲解 解决集合卷积的方法
  2. 计算机毕业设计——健身房管理系统
  3. catia草绘标注工具
  4. 【证券】什么是开仓、持仓和平仓?
  5. Eclipse Unable to install breakpoint in XXX 解决办法
  6. 献结程序员的一个故事——管道的故事
  7. Windows命令行连接远程数据库
  8. docker导致宿主机重启和Cgroup 驱动程序有关
  9. 瞬间让你效率提高一倍的高效学习方法
  10. google i/o_谷歌在I / O 2017上宣布的最好的东西