ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python实现excel图片识别,并转换成excel文件

2021-01-24 13:33:44  阅读:1413  来源: 互联网

标签:转换成 python excel yaml secret file path import


这个过程有点多,一步一步来。

一、文字识别

本人采用的是腾讯的云识别技术,所以先在腾讯完成一系列的注册、申请工作。

首先打开腾讯云的官网:https://cloud.tencent.com/

点击“入门”,这里面有大概需要的步骤:

https://cloud.tencent.com/product/generalocr/getting-started

开通文字识别的服务后:

这个按官方的说法是每个月可以免费使用1000次,还是很不错的。

开通服务后,还需要访问API的密钥,这个也需要申请,我这个是已申请好的:

二、实现效果

一张图片:

实现后的效果:

 

三、预安装相应的包

首先,要安装腾讯的组件包:tencentcloud-sdk-python。直接在线安装好像不得行,于是可以安装离线版,我这里下载后再安装的,包的名字叫:

pip install tencentcloud_sdk_python-3.0.330-py2.py3-none-any.whl

然后还安装了一个包:

pip install xlutils-2.0.0-py2.py3-none-any.whl

我的机子只安装了这两个,如果控制台有提示缺少包,可以自行再安装。

四、python实现

经过前面准备工作,下面把相应的代码贴出来:

image2excel.py:

# -*- coding: utf-8 -*-
import sys
import ocr
import xlrd
import yaml_class
from xlutils.copy import copy

pic_path = sys.argv[1]

print('doing...',pic_path)
# 使用ocr进行转换
config = yaml_class.get_yaml_data("config.yml")

trans = ocr.OCR()
path_excel = trans.img_to_excel(
    pic_path,
    image_path=pic_path,
    secret_id=config['secret_id'],
    secret_key=config['secret_key'],
)

old_excel = xlrd.open_workbook('output.xlsx')
new_excel = copy(old_excel)
ws = new_excel.get_sheet(0)
new_excel.save(pic_path+'.xls')

ocr.py:

# -*- 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识别封装
class OCR(object):

    def img_to_excel(self,
                     output_file_name,
                     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-shanghai", 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
        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

yaml_class.py:

# -*- coding: utf-8 -*-
import yaml

def get_yaml_data(yaml_file):
    # 打开yaml文件
    file = open(yaml_file, 'r', encoding="utf-8")
    file_data = file.read()
    file.close()
    # 将字符串转化为字典或列表
    data = yaml.load(file_data)
    return data

config.yml:

# -*- coding: utf-8 -*-
secret_id: AKIDPzLSHRK3bZUCSyCF3Z45Bj0LRHs0Ynzb
secret_key: Qa5QeYKwIQI4ZxDQFq663jIs********

虽然没得讲得很详细,但基本步骤就是这些,这样就可以利用腾讯的云服务,把excel图片识别出来,再转换成excel文件。

 

 

标签:转换成,python,excel,yaml,secret,file,path,import
来源: https://blog.csdn.net/qiuqiuit/article/details/113080645

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有