Python之ocr识别图片并转为excel文件

环境准备

1.开通腾讯文字识别服务

        按照官网步骤进行开通:https://cloud.tencent.com/product/generalocr/getting-started

开通后可获得两个参数:SecretId、SecretKey

         腾讯提供的文字识别服务,支持多种图片识别,包括身份证、表格、或者其他通用文字识别等,本文主要使用表格识别服务。

接口调用说明:

1.打开表格识别V2接口说明文档:https://cloud.tencent.com/document/product/866/49525#1.-.E6.8E.A5.E5.8F.A3.E6.8F.8F.E8.BF.B0

2.进入接口调试页面

 3.自动生成python语法的代码片段(供参考)

   

2.开发环境准备:

tencentcloud-sdk-python:

        pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

参考地址:https://cloud.tencent.com/document/sdk/Python

3.打包应用程序(按照下述步骤安装)

(1)pip install pywin32;
(2)pip install wheel
(3)pip install -U setuptools
(4)pip install pyinstaller

参考资料:https://blog.csdn.net/qiuqiuit/article/details/113080645

代码设计:

1.yaml

yaml文件管理配置信息:SecretId、SecretKey

yaml配置文件内容:config.yaml

# -*- coding: utf-8 -*-
secret_id: AKIDvpcBVdZJ0b2Rfha******
secret_key: DD0ZtzsXzFI6h5FAsN******

对应的读取yaml内参数的代码如下:

import yaml
def get_yaml_data(yaml_file):
    #1-打开yaml文件
    file = open(yaml_file, 'r', encoding="utf-8")
    #2-读取文件
    file_data = file.read()
    #3-将字符串转化为字典或列表
    data = yaml.safe_load(file_data)
    #4-关闭按文件
    file.close()
    #返回读取的数据内容
    return data

 2.ocr识别图片

# -*- coding: utf-8 -*-
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.ocr.v20181119 import ocr_client, models
import base64
# OCR识别封装
def img_to_excel(output_file_name,
                 image_path,
                 secret_id,
                 secret_key):
    #1- 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey
    cred = credential.Credential(
        secret_id,
        secret_key
    )
    #2- 实例化client对象
    http_profile = HttpProfile()
    http_profile.endpoint = "ocr.tencentcloudapi.com"

    client_profile = ClientProfile()
    client_profile.httpProfile = http_profile
    client_profile.signMethod = "TC3-HMAC-SHA256"
    client = ocr_client.OcrClient(cred, "ap-shanghai", client_profile)
    #3-实例化一个请求对象--使用表格V2
    fast_request = models.TableOCRRequest()
    #4-读取图片数据,使用Base64编码
    with open(image_path, 'rb') as f:
        image = f.read()
        image_base64 = str(base64.b64encode(image), encoding='utf-8')
    fast_request.ImageBase64 = image_base64
    #5-通过client对象调用访问接口,传入请求对象----使用表格V2
    resp=client.TableOCR(fast_request)
    #6-获取返回数据(Data为Base64编码后的Excel数据)
    data = resp.Data
    # 转换为Excel
    output_file_name = str(output_file_name)
    path_excel = output_file_name + ".xlsx"
    with open(path_excel, 'wb') as f:
        f.write(base64.b64decode(data))
    return path_excel



3.运行调用

# -*- coding: utf-8 -*-

import ocr
import yaml_class
'''
图片统一命名格式:'num'+N(编号)+'.jpn'
excel文件名称格式:与图片的N(编号)一一对应
'''
def ocr_pic(N):
    #调用yaml读取函数,已列表形式返回配置数据secret_id,secret_key
    config = yaml_class.get_yaml_data("config.yml")
    #遍历读取图片,N为图片的个数
    for image_path in range(1, N + 1):
        pic_path = image_path
        # 调用ocr识别图片并转成excel文件
        path_excel = ocr.img_to_excel(
            'excel_list/' + str(pic_path) ,  #excel文件路径+文件名
            'pic_list/' + 'num' + str(image_path) + '.png',  #图片文件路径+文件名
            secret_id=config['secret_id'],
            secret_key=config['secret_key'],
        )

if __name__ == '__main__':
    #入参为图片数量,假设有2张图片
    ocr_pic(2)

4.结果

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值