天天看点

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

背景

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

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

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

OCR

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

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

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

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

待转换图片

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

转换后的Excel

TableOCR

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

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

使用准备:

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

代码分享:

import base64from 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, modelsclass OCR(object):    def img_to_excel(self,             image_path,             secret_id,             secret_key):        # 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey        cred = credential.Credential(            secret_id,             secret_key            )        # 实例化client对象        httpProfile = HttpProfile()        httpProfile.endpoint = "ocr.tencentcloudapi.com"        clientProfile = ClientProfile()        clientProfile.httpProfile = httpProfile        clientProfile.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        # 转换为Excel        path_excel = image_path + ".xlsx"        with open(path_excel, 'wb') as f:            f.write(base64.b64decode(data))        return path_excel
           

tkGo封装

import osfrom menu.menu import EMenufrom utils.img.ocr import OCRfrom 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)        # 添加子菜单-图片表格数据转Excel        self.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("请先复制图片文件", )            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("转换成功:" + path_excel)
           

使用说明

步骤1:复制图片文件

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

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

步骤3:转换成功

base64转图片_一键识别图片中的表格数据,并转为Excel背景OCR图片表格转Excel,先上效果图TableOCRtkGo封装使用说明完整代码

完整代码

GitHub上搜索TheUncleWhoGrowsBeans

继续阅读