使用腾讯OCR,图片转表格
不是广告哈,就是记录一下操作,因为这些页面真的很难找,即便知道缺什么也找不到对应位置在哪…
文章目录
- 调用说明:(以Python为例)
- 步骤1:腾讯开服务
- 步骤2:图片转Base64使用
- 步骤3:把Base64编码转腾讯OCR
- 步骤4:Json转Dict
- 步骤5:Dict数据转Pandas.DataFrame格式:
- 步骤6:整体依次调用
- 完整代码
- 资料整理
调用说明:(以Python为例)
整个流程:
- 腾讯开服务
- 图片转base64编码
- 把base64编码转腾讯OCR
- 腾讯OCR返回的
json
,转Pandas Dict
类型 - 整理dict的数据为
Pandas DataFrame
类型
步骤1:腾讯开服务
进入控制台:https://console.cloud.tencent.com/cam/capi,新建一个密钥:
在控制台开启资源包:https://console.cloud.tencent.com/ocr/overview
步骤2:图片转Base64使用
def change_img_to_base64(image_path):"""base64编码图片"""with open(image_path, 'rb') as f:image_data = f.read()base64_data: bytes = base64.b64encode(image_data) # base64编码return base64_data
步骤3:把Base64编码转腾讯OCR
def tencent_ocr(suffix, image_based_64):"""腾讯OCR:param suffix:图片的后缀,比如png,jpg:param image_based_64:图片的base64编码"""from tencentcloud.common import credentialfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfilefrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.ocr.v20181119 import ocr_client, modelstry:cred = credential.Credential("自己的SecretId(看步骤1)", "自己的SecretKey(看步骤1)")httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)req = models.RecognizeTableOCRRequest()params = {"ImageBase64": "data:image/{suffix};base64,{image_based_64}".format(suffix=suffix, image_based_64=image_based_64.decode("utf8"))}req.from_json_string(json.dumps(params))resp = client.RecognizeTableOCR(req)return resp.to_json_string()except TencentCloudSDKException as err:print(err)
步骤4:Json转Dict
def json_to_dict(my_json: str) -> dict:"""json转dict类型"""return json.loads(my_json)
步骤5:Dict数据转Pandas.DataFrame格式:
def formation(json_data):"""根据腾讯ocr识别结果整理格式并输出"""if json_data is not None:dict_data = json_to_dict(json_data)for table_index, table_data in enumerate(dict_data['TableDetections']): # 遍历每个表格的数据table_data_list = []for each_table_data in table_data['Cells']: # 遍历每个表中的数据content: str = each_table_data['Text']x_y: list = list(each_table_data['Polygon'][0].values())x_y.append(content)table_data_list.append(x_y)# 整理格式table_df = pd.DataFrame(table_data_list)table_df.columns = ['x', 'y', 'content']table_df.sort_values(by=['y', 'x'], ascending=True, inplace=True)for index, line_df in table_df.groupby("y"): # 按每行进行处理line_df.sort_values(by=['x'], ascending=True, inplace=True)line_values = line_df['content'].values # 当前行的数据print(",".join(line_values))
步骤6:整体依次调用
if __name__ == '__main__':image = "mypic.png"image_base64 = change_img_to_base64(image) # 步骤1:图片转base64suffix = image.split('.')[-1] # 后缀tencent_result: json = tencent_ocr(suffix, image_base64)formation(tencent_result)
完整代码
import base64
import json
import pandas as pddef change_img_to_base64(image_path):"""base64编码图片"""with open(image_path, 'rb') as f:image_data = f.read()base64_data: bytes = base64.b64encode(image_data) # base64编码return base64_datadef json_to_dict(my_json: str) -> dict:"""json转dict类型"""return json.loads(my_json)def tencent_ocr(suffix, image_based_64):"""腾讯OCR:param suffix:图片的后缀,比如png,jpg:param image_based_64:图片的base64编码"""from tencentcloud.common import credentialfrom tencentcloud.common.profile.client_profile import ClientProfilefrom tencentcloud.common.profile.http_profile import HttpProfilefrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.ocr.v20181119 import ocr_client, modelstry:cred = credential.Credential("自己的SecretId(看步骤1)", "自己的SecretKey(看步骤1)")httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)req = models.RecognizeTableOCRRequest()params = {"ImageBase64": "data:image/{suffix};base64,{image_based_64}".format(suffix=suffix, image_based_64=image_based_64.decode("utf8"))}req.from_json_string(json.dumps(params))resp = client.RecognizeTableOCR(req)return resp.to_json_string()except TencentCloudSDKException as err:print(err)def formation(json_data):"""根据腾讯ocr识别结果整理格式并输出"""if json_data is not None:dict_data = json_to_dict(json_data)for table_index, table_data in enumerate(dict_data['TableDetections']): # 遍历每个表格的数据table_data_list = []for each_table_data in table_data['Cells']: # 遍历每个表中的数据content: str = each_table_data['Text']x_y: list = list(each_table_data['Polygon'][0].values())x_y.append(content)table_data_list.append(x_y)# 整理格式table_df = pd.DataFrame(table_data_list)table_df.columns = ['x', 'y', 'content']table_df.sort_values(by=['y', 'x'], ascending=True, inplace=True)for index, line_df in table_df.groupby("y"): # 按每行进行处理line_df.sort_values(by=['x'], ascending=True, inplace=True)line_values = line_df['content'].values # 当前行的数据print(",".join(line_values))if __name__ == '__main__':image = "mypic.png"image_base64 = change_img_to_base64(image) # 步骤1:图片转base64suffix = image.split('.')[-1] # 后缀tencent_result: json = tencent_ocr(suffix, image_base64)formation(tencent_result)
资料整理
- 腾讯提供的服务叫做行业文档识别:https://cloud.tencent.com/act/event/ocrdemo?dt=4
- 行业文档识别的接口文档:https://cloud.tencent.com/document/api/866/49525
- API调试的界面在:https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=RecognizeTableOCR&SignVersion=
使用腾讯OCR,图片转表格相关推荐
- python调用qq识别图片文字_Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解...
百度OCR体验地址: 腾讯OCR体验地址: 测试结果是:腾讯的效果要比百度的好 腾讯云目前额度是: 每个接口 1,000次/月免费,有6个文字识别的接口,一共是6,000次/月 百度接口调用之前写过文 ...
- 腾讯OCR识别图片(身份证、车牌号、名片、驾驶证、营业执照、银行卡、车牌号、人脸等)
[原文:https://blog.csdn.net/liguoqingxjxcc/article/details/82224670] 开始 腾讯OCR可以做什么? 可以鉴黄.识别身份证.名片.驾驶证. ...
- python调用(百度云、腾讯云)API接口表格识别并保存为excel
Python表格识别 图像识别具有较高的商业价值,本节主要通过python调用(百度云.腾讯云)API接口表格识别并保存为excel分析表格识别的能力: 提示:需分别申请密钥,在相应位置添加自己密钥即 ...
- excel图片地址直接显示图_图片转表格基于百度AI
失踪日久,皆因进来学业繁重,其实就是没好好学习.偶遇一有趣需求,方才始更一篇. 需求如下:图片内表格,需直接将图片转换为excel表格. 初步构想,迅捷在线转换,奈何没找到直接转换,图片转pd ...
- 阿里云OCR图片识别
阿里云OCR图片识别 请求参数(Body) 请求示例(java) 正常返回示例 错误码定义 阿里云OCR图片识别: 单字识别,表格识别,旋转功能 准备条件:阿里云OCR图片识别API购买,初次购买1分 ...
- 图片识别表格的方法有哪些?试试这几个好用的表格识别软件
随着数字化时代的到来,越来越多的公司和个人需要处理大量的表格数据.这些数据往往以图片的格式存在,而手动输入这些数据非常耗费时间和精力.因此,图片识别表格软件正在成为一个不可或缺的工具.那么,图片识别表 ...
- Python 操作Word文档插入图片和表格实例演示
Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104 转载于:https://www.cnblogs.com/chongdongxia ...
- word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...
在word日常办公中,很多小伙伴是不是总会遇到文字.图片及表格排版的某些问题呢?今天我们来分享一些在办公中经常会遇到几个常见问题的解决方法. 1.写文档的时候出现"吃字"现象. 在 ...
最新文章
- jupyter怎么调字体_AJ里最低调的系列之一:Air Jordan 3
- mysql设置keepalived_MySQL高可用性之Keepalived+MySQL(双主热备)
- 【Windows】创建任务计划
- Python学习(四) —— 编码
- matplotlib一些常用知识点的整理,
- (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
- 五、会话及其会话技术
- linux 关闭rsync服务器,linux下配置rsync服务器和实时同步
- bootstrap按钮组(二)
- 下面不是android四大组件之一的是,Android四大组件之一 Service
- A Beginner's Guide To Understanding Convolutional Neural Networks Part One (CNN)笔记
- mysql从一个表中拷贝数据到另一个表中sql语句
- 洛谷 P4114 Qtree1 树链剖分
- x61 linux 驱动 无线网卡,联想X61无线网卡适配器驱动
- SimHei字体(永久有效)
- php gridreport,Grid++Report下载-Grid++Report报表工具官方版下载[报表插件]-华军软件园...
- 如何选择视频编码格式
- Python练习数据结构笔记
- 【C语言】if、if else、else、switch的用法
- postman中APIs的使用方法
热门文章
- python 即时通讯_用python实现发送即时消息到twitter
- 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
- mini2440_x35 使用minicom进行连接,传送文件
- springboot秒杀课程学习整理1-1
- 实用收藏Linux命令备忘
- MySQL级联复制(A-B-C) —log-slave-updates = 1
- 好程序员训练营-Java变量的作用域
- android smartbar适配
- android开发中eclipse里xml开发的自动提示和使用帮助快捷键提示
- nginx配置wordprocess访问wp-admin自动加斜杠配置实例