前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >玩转OCR | 腾讯云智能结构化OCR全面指南

玩转OCR | 腾讯云智能结构化OCR全面指南

原创
作者头像
Damon小智
发布2024-12-24 12:58:10
发布2024-12-24 12:58:10
50710
代码可运行
举报
文章被收录于专栏:人工智能人工智能
运行总次数:0
代码可运行

在数字化转型的浪潮中,光学字符识别(OCR)技术已成为企业提高效率、降低成本的关键工具。腾讯云智能结构化OCR凭借其先进的技术和广泛的应用场景,正在推动跨行业高效精准的文档处理与数据提取新时代。本文将全面介绍腾讯云智能结构化OCR的功能、技术优势、应用实践以及行业案例,帮助您深入了解并有效运用这一强大的工具。


一、产品介绍与技术优势

随着信息化时代的到来,企业每天都会生成和处理大量的文档、票据和表单。这些数据往往以纸质或图像形式存在,传统的人工录入不仅效率低下,还容易出错。OCR技术的出现为解决这一问题提供了有效途径。而在众多OCR解决方案中,腾讯云智能结构化OCR以其高精度、灵活性和易用性,成为众多企业的首选。

腾讯云智能结构化OCR产品分为 基础版高级版,两者均适用于各行业,能够精准识别卡证、物流单据、工业标签、服务合同及医疗报告等多种文档类型。无论面对版式灵活多变或中英文混合排版的挑战,该产品仍能保持卓越的识别精度。

腾讯云智能结构化OCR以 多模态大模型技术 为核心,融合了深度学习、图像检测技术及OCR大模型能力。通过智能建立键值对应关系,支持客户根据自身需求定制个性化模板,显著提高数据抓取与录入的效率。

腾讯云智能结构化OCR产品优势如下:

特性

描述

高精度识别

腾讯云智能结构化OCR支持任意版式的卡证票据识别,各字段的识别精度均处于业界领先水平。文本基础识别准确率达到98%以上,文本结构化准确率达到85%以上,确保企业能够获取高质量的数据。

完备性

该产品支持多种常见版式的数据结构化提取,如警察证、教师资格证、道路运输证等,适用于多个行业场景。无论是固定卡证还是复杂的物流单据,均可实现智能识别,满足不同业务需求。

易用性

用户仅需简单的几步配置,即可定制个性化需求模板,快速提取结构化数据,实现高效录入。腾讯云提供了丰富的API接口和详细的使用文档,开发者可以轻松集成OCR功能到自己的系统中。


二、API调用与场景实践

1. 图像增强

图像增强是指通过上传一张图片生成一张基于原图更加清晰的图片,用于提升图像质量。目前腾讯云API支持ImageBase64(图像的Base64编码字符串)或ImageUrl(图像URL)两种输入方式。

下面我们通过API Explorer中在线这个功能,我们先准备一张在线的模糊图片。

调试API后,系统返回处理成功的响应,并提供增强后的图像的base64编码。

通过将base64编码转换成文件流,我们可以得到增强后的图片。

通过对比原图和增强后的图像,可以明显看出图像质量的提升,效果非常好。

上面的只是在线调用的示例,实际开发中我们更多会用程序调用API的方法,下面是图像增强API的调用示例:

Java代码示例:

代码语言:java
复制
package com.tencent;
import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.*;

public class Sample {
    public static void main(String [] args) {
        try{
            Credential cred = new Credential("SecretId", "SecretKey");
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("ocr.tencentcloudapi.com");
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            OcrClient client = new OcrClient(cred, "", clientProfile);
            ImageEnhancementRequest req = new ImageEnhancementRequest();
            ImageEnhancementResponse resp = client.ImageEnhancement(req);
            System.out.println(AbstractModel.toJsonString(resp));
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
    }
}

2. 票据识别

票据识别是指通过OCR技术对各类票据(如发票、收据、报销单等)进行文字识别和数据提取。腾讯云智能结构化OCR提供了高精度的票据识别能力,能够自动提取票据中的关键信息,如发票号码、金额、日期等,极大地提升了企业的自动化报销和财务管理效率。

下面我们通过API Explorer中在线这个功能,我们先准备一张票据图片。

接着,我们在Image64的参数位上传。

点击发起调用,系统返回处理成功的响应,并提供识别后的结构化数据。

上面的只是在线调用的示例,实际开发中我们更多会用程序调用API的方法,下面是票据识别API的调用示例:

.NET代码示例:

代码语言:dotnet
复制
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Ocr.V20181119;
using TencentCloud.Ocr.V20181119.Models;

namespace TencentCloudExamples
{
    class VatInvoiceOCR
    {
        static void Main(string[] args)
        {
            try
            {
                Credential cred = new Credential {
                    SecretId = "********",
                    SecretKey = "********"
                };
                ClientProfile clientProfile = new ClientProfile();
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("ocr.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;
                OcrClient client = new OcrClient(cred, "", clientProfile);
                VatInvoiceOCRRequest req = new VatInvoiceOCRRequest();
                VatInvoiceOCRResponse resp = client.VatInvoiceOCRSync(req);
                Console.WriteLine(AbstractModel.ToJsonString(resp));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

3. 特定场景识别

腾讯云智能结构化OCR不仅支持通用的文字识别,还针对特定场景提供了专业的识别功能,如数学公式识别和印章识别。这些功能能够满足不同业务需求,提升数据处理的精度和效率。

3.1 数学公式识别

数学公式识别是指通过OCR技术对数学公式进行准确的识别和解析,支持复杂的公式结构和符号。这对于教育、科研等领域具有重要意义。

我们找一张带有复杂公式的图片进行测试,如图。

本地创建python文件app.py,将图片转为base64的字符串格式填入,最终代码如下:

代码语言:python
代码运行次数:0
复制
# -*- coding: utf-8 -*-
import hashlib
import hmac
import json
import sys
import time
from datetime import datetime
if sys.version_info[0] <= 2:
    from httplib import HTTPSConnection
else:
    from http.client import HTTPSConnection

def sign(key, msg):
    return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()

secret_id = "AKIDS***************bzE"
secret_key = "AD8rM*****************8S4f"
token = ""
service = "ocr"
host = "ocr.ap-shanghai.tencentcloudapi.com"
region = "ap-guangzhou"
version = "2018-11-19"
action = "FormulaOCR"
payload = "{\"ImageBase64\":\"data:image/png;base64,**********需要的图片base64编码*********\"}"
params = json.loads(payload)
endpoint = "https://ocr.ap-shanghai.tencentcloudapi.com"
algorithm = "TC3-HMAC-SHA256"
timestamp = int(time.time())
date = datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d")

# ************* 步骤 1:拼接规范请求串 *************
http_request_method = "POST"
canonical_uri = "/"
canonical_querystring = ""
ct = "application/json; charset=utf-8"
canonical_headers = "content-type:%s\nhost:%s\nx-tc-action:%s\n" % (ct, host, action.lower())
signed_headers = "content-type;host;x-tc-action"
hashed_request_payload = hashlib.sha256(payload.encode("utf-8")).hexdigest()
canonical_request = (http_request_method + "\n" +
                     canonical_uri + "\n" +
                     canonical_querystring + "\n" +
                     canonical_headers + "\n" +
                     signed_headers + "\n" +
                     hashed_request_payload)

# ************* 步骤 2:拼接待签名字符串 *************
credential_scope = date + "/" + service + "/" + "tc3_request"
hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()
string_to_sign = (algorithm + "\n" +
                  str(timestamp) + "\n" +
                  credential_scope + "\n" +
                  hashed_canonical_request)

# ************* 步骤 3:计算签名 *************
secret_date = sign(("TC3" + secret_key).encode("utf-8"), date)
secret_service = sign(secret_date, service)
secret_signing = sign(secret_service, "tc3_request")
signature = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest()

# ************* 步骤 4:拼接 Authorization *************
authorization = (algorithm + " " +
                 "Credential=" + secret_id + "/" + credential_scope + ", " +
                 "SignedHeaders=" + signed_headers + ", " +
                 "Signature=" + signature)

# ************* 步骤 5:构造并发起请求 *************
headers = {
    "Authorization": authorization,
    "Content-Type": "application/json; charset=utf-8",
    "Host": host,
    "X-TC-Action": action,
    "X-TC-Timestamp": timestamp,
    "X-TC-Version": version
}
if region:
    headers["X-TC-Region"] = region
if token:
    headers["X-TC-Token"] = token

try:
    req = HTTPSConnection(host)
    req.request("POST", "/", headers=headers, body=payload.encode("utf-8"))
    resp = req.getresponse()
    print(resp.read())
except Exception as err:
    print(err)

使用 python app.py 直接运行,得到图中的高数公式:

识别出的结果准确无误:

$$C{-n}^{k}=(-1)^{k} C{n+k-1}^{k}$$


3.2 印章识别

印章识别是指通过OCR技术对印章进行准确的识别和解析,支持各种印章类型和样式。这在合同管理、文件审核等场景中具有重要应用。

以下面的公章为例:

调试API后,系统返回处理成功的响应,并提供识别后的印章内容,识别结果示例如下:

Go代码示例:

代码语言:go
复制
package main

import (
    "fmt"

    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
    ocr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr/v20181119"
)

func main() {
    credential := common.NewCredential(
        "SecretId",
        "SecretKey",
    )
    cpf := profile.NewClientProfile()
    cpf.HttpProfile.Endpoint = "ocr.ap-shanghai.tencentcloudapi.com"
    client, _ := ocr.NewClient(credential, "ap-guangzhou", cpf)

    request := ocr.NewSealOCRRequest()
    request.ImageUrl = common.StringPtr("https://example.com/seal.jpg")
    response, err := client.SealOCR(request)
    if _, ok := err.(*errors.TencentCloudSDKError); ok {
        fmt.Printf("An API error has returned: %s", err)
        return
    }
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s", response.ToJsonString())
}

三、实际应用与未来展望

在实际应用中,腾讯云智能结构化OCR不仅提升了文字识别的准确率,还为图像处理领域带来了更多可能性。通过智能化的结构化信息抽取,企业能够更加高效地处理和分析图像数据,进一步推动业务流程的自动化和智能化。尤其是在面对复杂文档和多语言排版时,腾讯云OCR表现出的卓越性能,使其在各行业中得到了广泛的应用和认可。

对于未来,随着技术的不断迭代和优化,OCR技术将会更加智能和高效,能够应对更复杂的应用场景,满足企业日益增长的数据处理需求。腾讯云智能结构化OCR将继续引领行业发展,为更多企业提供强有力的技术支持,推动全球数字化转型的进程。


参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、产品介绍与技术优势
  • 二、API调用与场景实践
    • 1. 图像增强
    • 2. 票据识别
    • 3. 特定场景识别
      • 3.1 数学公式识别
      • 3.2 印章识别
  • 三、实际应用与未来展望
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档