不是广告哈,就是记录一下操作,因为这些页面真的很难找,即便知道缺什么也找不到对应位置在哪…

文章目录

  • 调用说明:(以Python为例)
    • 步骤1:腾讯开服务
    • 步骤2:图片转Base64使用
    • 步骤3:把Base64编码转腾讯OCR
    • 步骤4:Json转Dict
    • 步骤5:Dict数据转Pandas.DataFrame格式:
    • 步骤6:整体依次调用
  • 完整代码
  • 资料整理

调用说明:(以Python为例)

整个流程:

  1. 腾讯开服务
  2. 图片转base64编码
  3. 把base64编码转腾讯OCR
  4. 腾讯OCR返回的json,转Pandas Dict类型
  5. 整理dict的数据为Pandas DataFrame类型

步骤1:腾讯开服务

  1. 进入控制台:https://console.cloud.tencent.com/cam/capi,新建一个密钥:

  2. 在控制台开启资源包: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,图片转表格相关推荐

  1. python调用qq识别图片文字_Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解...

    百度OCR体验地址: 腾讯OCR体验地址: 测试结果是:腾讯的效果要比百度的好 腾讯云目前额度是: 每个接口 1,000次/月免费,有6个文字识别的接口,一共是6,000次/月 百度接口调用之前写过文 ...

  2. 腾讯OCR识别图片(身份证、车牌号、名片、驾驶证、营业执照、银行卡、车牌号、人脸等)

    [原文:https://blog.csdn.net/liguoqingxjxcc/article/details/82224670] 开始 腾讯OCR可以做什么? 可以鉴黄.识别身份证.名片.驾驶证. ...

  3. python调用(百度云、腾讯云)API接口表格识别并保存为excel

    Python表格识别 图像识别具有较高的商业价值,本节主要通过python调用(百度云.腾讯云)API接口表格识别并保存为excel分析表格识别的能力: 提示:需分别申请密钥,在相应位置添加自己密钥即 ...

  4. excel图片地址直接显示图_图片转表格基于百度AI

    失踪日久,皆因进来学业繁重,其实就是没好好学习.偶遇一有趣需求,方才始更一篇.     需求如下:图片内表格,需直接将图片转换为excel表格. 初步构想,迅捷在线转换,奈何没找到直接转换,图片转pd ...

  5. 阿里云OCR图片识别

    阿里云OCR图片识别 请求参数(Body) 请求示例(java) 正常返回示例 错误码定义 阿里云OCR图片识别: 单字识别,表格识别,旋转功能 准备条件:阿里云OCR图片识别API购买,初次购买1分 ...

  6. 图片识别表格的方法有哪些?试试这几个好用的表格识别软件

    随着数字化时代的到来,越来越多的公司和个人需要处理大量的表格数据.这些数据往往以图片的格式存在,而手动输入这些数据非常耗费时间和精力.因此,图片识别表格软件正在成为一个不可或缺的工具.那么,图片识别表 ...

  7. Python 操作Word文档插入图片和表格实例演示

    Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...

  8. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104 转载于:https://www.cnblogs.com/chongdongxia ...

  9. word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...

    在word日常办公中,很多小伙伴是不是总会遇到文字.图片及表格排版的某些问题呢?今天我们来分享一些在办公中经常会遇到几个常见问题的解决方法. 1.写文档的时候出现"吃字"现象. 在 ...

最新文章

  1. jupyter怎么调字体_AJ里最低调的系列之一:Air Jordan 3
  2. mysql设置keepalived_MySQL高可用性之Keepalived+MySQL(双主热备)
  3. 【Windows】创建任务计划
  4. Python学习(四) —— 编码
  5. matplotlib一些常用知识点的整理,
  6. (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
  7. 五、会话及其会话技术
  8. linux 关闭rsync服务器,linux下配置rsync服务器和实时同步
  9. bootstrap按钮组(二)
  10. 下面不是android四大组件之一的是,Android四大组件之一 Service
  11. A Beginner's Guide To Understanding Convolutional Neural Networks Part One (CNN)笔记
  12. mysql从一个表中拷贝数据到另一个表中sql语句
  13. 洛谷 P4114 Qtree1 树链剖分
  14. x61 linux 驱动 无线网卡,联想X61无线网卡适配器驱动
  15. SimHei字体(永久有效)
  16. php gridreport,Grid++Report下载-Grid++Report报表工具官方版下载[报表插件]-华军软件园...
  17. 如何选择视频编码格式
  18. Python练习数据结构笔记
  19. 【C语言】if、if else、else、switch的用法
  20. postman中APIs的使用方法

热门文章

  1. python 即时通讯_用python实现发送即时消息到twitter
  2. 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
  3. mini2440_x35 使用minicom进行连接,传送文件
  4. springboot秒杀课程学习整理1-1
  5. 实用收藏Linux命令备忘
  6. MySQL级联复制(A-B-C) —log-slave-updates = 1
  7. 好程序员训练营-Java变量的作用域
  8. android smartbar适配
  9. android开发中eclipse里xml开发的自动提示和使用帮助快捷键提示
  10. nginx配置wordprocess访问wp-admin自动加斜杠配置实例