首页 >> 大全

接入腾讯云识别图片中的文字并保存(数学建模)

2023-08-07 大全 30 作者:考证青年

在数学建模中会遇到对图片中的文字进行识别提取,保存到excel中,以下进行操作

1、在腾讯云中开通业务,每个月有免费额度,虽然识别也会不准,但还算亲民,具体操作可参考官方文档文字识别 一分钟接入服务端 API-快速入门-文档中心-腾讯云

2、代码接入腾讯云API,进行图片识别

腾讯云区块链如何接入__腾讯云ocr识别

3、将识别后的文字进行保存。

在识别后的结果千奇百怪,有元素个数不统一,有识别错误等情况如下图:

腾讯云ocr识别__腾讯云区块链如何接入

为了实现不同信息的正确提取,使用了.join()元素合并,以解决识别后元素个数不统一的情况。.split()以标志点分割文字,以解决识别出现错误的情况(在这里使用识别率最高的“#”作为标志)具体过程在代码中的备注均有说明,请大家放心食用。缺少库可自行下载。

import os
import pandas as pd
#以下代码是将【本地图片】进行文字识别
# Ningmou#接入腾讯云文字识别(高精度版)作为端口接入
#pip install tencentcloud-sdk-python
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, models
import base64
import json
import jsonpath
def get_json(img_path) :try:cred = credential.Credential("", "") #输入密钥httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = ocr_client.OcrClient(cred, "", clientProfile) #服务器地址req = models.GeneralAccurateOCRRequest()#对本地图片进行base64转码【本地图片解析需要先转成base64编码】with open(img_path, 'rb') as f:base64_data = base64.b64encode(f.read())s = base64_data.decode()ImageBase64_value = 'data:image/jpeg;base64,%s'%s#params是字符串,以下进行拼接params = '{"ImageBase64":"' + ImageBase64_value + '"}' #以图片Base64编码发送请求req.from_json_string(params)resp = client.GeneralAccurateOCR(req)resp = resp.to_json_string()        #不知道为何,此步无法完成数据提取,于是在下面又写了一个解析的方法return respexcept TencentCloudSDKException as err:print(err)def parse_json(resp):  #解析with open('text.txt','w',encoding='utf-8') as f:  #先写入txt中f.write(resp)with open('text.txt','r',encoding='utf-8') as f:  #然后再读str = f.read()str = json.loads(str)                              #json.loads:将JSON字符串解码为 Python 对象;json.dumps:将 Python 对象编码成 JSON 字符串DetectedText = jsonpath.jsonpath(str, "$..DetectedText")  #解析:通过找到DetectedText获得对应的值return DetectedText#print(len(DetectedText))#指明图片所在文件夹
images = r'E:\mycode\tupian'#遍历所有图片并识别文字,切片提取有效信息
data1 = [] #设置空列表,储存数据
str = '' #用于合并元素
for img_path in os.listdir(images):  #os用于连接系统上的文件
# DetectedText 是识别后得到的结果resp = "".join(get_json(f'{images}/{img_path}'))DetectedText1 = parse_json(resp)  #腾讯云识别的文字拆分成几个元素DetectedText = str.join(DetectedText1)  #将每个元素合并成一个元素shijian = DetectedText[0:5]  #将每个元素的前5个字符提取作为时间wendu = DetectedText.split('#', 2)   #以元素中“#”作为标志切开,形成3个元素yisi = wendu[1][:-1]  #提取1#温度ersi = wendu[-1][-5:]  #提取2#温度data1.append([shijian, yisi, ersi])  #将提取的数据放入data1中# 输出结果print(wendu)##保存数据#新建文件夹保存
df = pd.DataFrame(data1)
print(f"识别结果如下:")
print(df)
df.to_excel("附件2.xlsx", index=False)

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了