背景

有时候我们需要将图片中的表格数据提取出来进行再次编辑,但一个字一个字的敲出来是件非常麻烦的事。

有没有更好的办法,一键提取图片中的表格数据,并转成Excel。

这时候,就需要用到OCR 技术了。

OCR

传统OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。

随着深度学习在OCR领域的成功应用,检测图像中的文字区域以及识别文字内容已经变得越来越成熟。

图片表格转Excel,先上效果图

待转换图片:

转换后的Excel:

TableOCR

本文使用腾讯的“文字识别OCR”,每月免费1千次,可以满足大部分普通用户的需求。

使用准备:

  1. 申请腾讯云账户secretId,secretKey
  2. 下载SDK,本文使用的是Python,可通过pip进行安装:pip install tencentcloud-sdk-python

代码分享:

import base64
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, modelsclass OCR(object):def img_to_excel(self, image_path, secret_id, secret_key):# 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKeycred = credential.Credential(secret_id, secret_key)# 实例化client对象httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclientProfile.signMethod = "TC3-HMAC-SHA256"client = ocr_client.OcrClient(cred, "ap-guangzhou", clientProfile)# 实例化一个请求对象req = models.GeneralFastOCRRequest()# 读取图片数据,使用Base64编码with open(image_path, 'rb') as f:image = f.read()image_base64 = str(base64.b64encode(image), encoding='utf-8')req.ImageBase64 = image_base64# 通过client对象调用访问接口,传入请求对象resp = client.TableOCR(req)# 获取返回数据(Data为Base64编码后的Excel数据)data = resp.Data# 转换为Excelpath_excel = image_path + ".xlsx"with open(path_excel, 'wb') as f:f.write(base64.b64decode(data))return path_excel

tkGo封装

import os
from menu.menu import EMenu
from utils.img.ocr import OCR
from utils.clipboard.clipboard import Clipboardclass MenuImg(EMenu):LABEL_NAME = "Img"LABEL_IMG_TO_EXCEL = "IMG to Excel"def __init__(self, master=None, cnf={}, **kw):super().__init__(master=master, cnf=cnf, **kw)# 添加主菜单master.add_cascade(label=self.LABEL_NAME, menu=self)# 添加子菜单-图片表格数据转Excelself.add_command(  label=self.LABEL_IMG_TO_EXCEL, command=self.img_to_excel)@EMenu.thread_run(LABEL_IMG_TO_EXCEL)def img_to_excel(self):# 获取图片文件路径data_type, data_content = Clipboard.get_data()if data_type != Clipboard.DATA_TYPE_FILE:self.msg_box_err("请先复制图片文件", title="错误")return# 使用ocr进行转换ocr = OCR()for file in data_content:path_excel = ocr.img_to_excel(image_path=file,secret_id=self.conf.api.TC_OCR_SECRET_ID,secret_key=self.conf.api.TC_OCR_SECRET_KEY)self.msg_box_info("转换成功:\n" + path_excel)

使用说明

步骤1:复制图片文件

步骤2:选择Img菜单下的IMG to Excel子菜单

步骤3:转换成功

完整代码

GitHub上搜索TheUncleWhoGrowsBeans

一键识别图片中的表格数据,并转为Excel相关推荐

  1. 腾讯云文字识别API提取表格数据并生成Excel文件

    腾讯云文字识别API提取表格数据并生成Excel文件 本文主要介绍了利用腾讯云表格文字识别API提取图片表格数据并生成Excel文件.主要涉及的知识点有:腾讯云API的调用.json文件的处理以及Ex ...

  2. 如何识别图片中的表格数据

      在很多时候,我们的数据来源形式是多种多样的,有时候数据(或表格)也会呈现在图片中.那么,我们如何来获取图片中的有用数据呢?当一张图片中含有表格数据的时候,我们可以用OpenCV识别表格中的直线,然 ...

  3. opencv ocr文字识别_用OpenCV和OCR识别图片中的表格数据

    ♚ 作者: jclian,喜欢算法,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!   在很多时候,我们的数据来源形式是多种多样的,有时候数据(或表格)也会呈现在图片 ...

  4. 用OpenCV和OCR识别图片中的表格数据

    ♚ 作者: jclian,喜欢算法,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!   在很多时候,我们的数据来源形式是多种多样的,有时候数据(或表格)也会呈现在图片 ...

  5. 如何识别图片中的表格数据(opencv 和pyteressact)

      在很多时候,我们的数据来源形式是多种多样的,有时候数据(或表格)也会呈现在图片中.那么,我们如何来获取图片中的有用数据呢?当一张图片中含有表格数据的时候,我们可以用OpenCV识别表格中的直线,然 ...

  6. excel两个表格数据对比_用Excel一键抓取网页表格数据

    无需插件或编程,Excel自带一键抓取网页表格数据,你会用吗?省去从网页复制甚至手工抄写的麻烦,极大提高工作效率! 首先在浏览器打开想要抓取表格的网页(例如:中国银行外汇牌价),复制地址栏网址,然后打 ...

  7. matlab将列数据存成excel表格,matlab将列数据存成excel表格-matlab工作区数据怎么转为excel...

    如何将excel中数据导入matlab并存入数组中 直接写 X=xlsread('路径 文件名.xls','你想取出的列'): 例如X=xlsread('c:\数据.xls','a1:b4');就取出 ...

  8. matlab自动生成excel工作区,matlab数据怎么导出excel表格-matlab工作区数据怎么转为excel...

    怎样将MATLAB中的数据输出到excel中 使用 xlswrite()函数可以将matlab中数据保存到excel中,请看下面例子: >> data = magic(5) % 示例数据 ...

  9. matlab工作区数据导出l,matlab把数据保存为excel表格-matlab工作区数据怎么转为excel...

    怎样将MATLAB中的数据输出到excel中? 将数据保存到excel文件 xlswrite(xlsfile, data, sheet, range); % sheet 和 range不指定 如: x ...

  10. r语言 将表格导出为csv_如何将R语言中表格数据输出为Excel文件.pdf

    如何将R 语言中的表格数据输出为Excel 文件 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com /u/Bearjazz 平台的开放性使得R 语言具有了丰富的运算 ...

最新文章

  1. 逻辑回归的相关问题及java实现
  2. MINA系列学习-IoAccpetor
  3. Python 技术篇-requests发送post请求传文件给flask服务端报405、400问题解决方法
  4. [BZOJ1061][Noi2008]志愿者招募
  5. 40、Power Query-Text.Combine函数进阶
  6. Python常用模块之sys模块
  7. Redisson分布式锁实战(适用于Redis高并发场景)
  8. 电脑格式化后需要重装系统吗_电脑经常重装系统对电脑有影响吗
  9. java 解析并生成 XML
  10. ​易生信-宏基因组2020 积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...
  11. php7 连接mysql插件_php7
  12. Java调用.net开发的webService接口
  13. 这4个小程序为什么有很多人在用,仅仅是因为不占手机内存空间?
  14. OpenCV使用FileStorage保存Mat数据
  15. 交易系统典藏书籍总汇以及系统交易、程序化交易等经典资料收藏
  16. 家里计算机网络布局图,图解八种家庭网络常规布局优缺点
  17. 关键对话(如何高效沟通)读书总结
  18. 王者android与ios互通,王者荣耀ios和安卓数据互通吗?数据互通时代即将来临
  19. 去掉字符串头尾指定字符
  20. PHP大数据量(大于50万)导出到Excel解决方案

热门文章

  1. 电脑共享打印机拒绝访问要怎么办
  2. 【C/C++】__stdcall、__cdcel和__fastcall定义与区别
  3. 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS
  4. 树上战争(HDU - 2545)
  5. 微信开发之小程序UI设计规范
  6. APP抓包工具Fidder
  7. uniapp实现打印PDF文件
  8. 黑马程序员—-C语言入门十重奏之十renascence
  9. HC-05蓝牙模块主从机通信
  10. 解决IE浏览器无法使用“IP:端口“直接访问的问题