• 0
  • 0
分享
  • Python之ocr识别图片并转为excel文件
  • 豆秸 2022-07-08 08:58:45 字数 3200 阅读 8021 收藏 0

环境准备

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

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

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

1.png

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

接口调用说明:

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

2.进入接口调试页面

投2.png

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

投3.png

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.结果

投4.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1.ant简介  1.1 什么是ant?  JMeter: 编写测试脚本生成jmx脚本,运行接口测试。JMeter相当于篮球场,jmx脚本相当于篮球运行场。  ant: 构建工具,通过调用JMeter来批量运行测试脚本,并生成测试报告。Ant是一个功能强大的打包编译工具。我们使用他的目的是将JTL(xml)格式文件转化为html格式的文件,相当于篮球教练的角色。  1.2 什么是构建  概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅于此,但是主要用来干这个。  2. 构建ant环境  1)去Apache官网上下载ant最新版,我下载的是apa...
            14 17 4023
            分享
          •   在SDV的大趋势下,汽车零部件智能化水平不断提高,车辆内部搭载的软件也越来越多。毫无疑问,车辆复杂度的提高必将带来维护上的困难,车企要如何面对更新迭代速度越来越快的软件、固件系统?OTA(over the air)技术在软件定义汽车中扮演了核心角色,帮助车企远程实现车辆功能升级、性能优化、缺陷修复,为用户带来更好的服务和体验。车企也得以和用户建立更好、更深远的联系。  OTA安全风险  作为车企修复软件固件漏洞、迭代改进软件功能的重要途径,OTA的快速普及让其成为黑客的重点研究对象。总体上OTA常见的安全风险包括以下几个:  身份假冒  攻击者伪装OTA通信中的发送方或接收方身份。  窃听...
            0 0 568
            分享
          • 使用python3.6编写一个单元测试demo,例如:对学生Student类编写一个简单的单元测试。1、编写Student类:#!/usr/bin/env python3 # -*- coding: utf-8 -*-   class Student(object):   def __init__(self,name,score): self.name = name self.score = score def get_grade(self): if&nb...
            1 1 1501
            分享
          •   一、问题引入  笔者在使用robotframework工具进行web ui自动化脚本编写时,发现:对于页面某个复选框元素定位,使用select checkbox关键字+xpath定位方式进行复选框勾选操作时,报错“Checkbox with locator,'xpath=//hs-i18n[contains(.,'xx')]' not found”,即xpath定位路径的checkbox找不到。经过笔者排错和研究,得出以下结论:1、xpath定位路径正确;2、select checkbox对元素使用标签有限制,只能对input标签使用,而测试的元素...
            12 12 2038
            分享
          • 解决脚本录制问题,可以将Fiddler或Charles转换成对应的Jmeter脚本,实现部分内容的参数化配置,通过修改部分参数或参数化可以对http协议的接口进行自动化测试或简单的压力测试GitHub地址https://github.com/dongpengfei826153155/fiddler2jmeter(python实现)操作步骤1.1 打开Fiddler/Charles录制请求1.1.1 Fiddler录制1.1.2 Charles录制1.2 将需要的HTTP请求导出1.2.1 Fiddler导出为saz格式1.2.1 Charles导出为chlsj格式1.3 执行脚本1.3.1 参...
            0 0 2360
            分享
      • 51testing软件测试圈微信