本文介绍文字识别OCR产品的使用流程。
使用流程
通过体验馆和SDK调用文字识别OCR服务时,文字识别OCR仅做图片识别并返回结果,不会存储图片和识别结果。
免登录体验服务
如果您是新用户(未注册过阿里云账号、未开通文字识别OCR服务),建议先通过阿里云文字识别体验馆>体验中心的可视化界面上传单张图片体验OCR效果。体验馆无需注册和登录账号,免费体验所有文字识别服务,不限次数,但无法通过SDK批量测试,也无法将OCR识别服务对接到业务系统。
当您判断文字识别OCR产品能够满足业务需求时,可前往文字识别OCR控制台按需开通服务。
注册阿里云账号并完成实名认证
开通服务
使用阿里云账号(主账号)或者RAM账号(子账号)登录文字识别OCR控制台按需开通服务。
文字识别OCR产品提供10类OCR服务,每类服务需单独开通,开通服务不产生费用。根据开通的服务不同,产品按月赠送200次或者一次性赠送50次免费额度,每调用成功一次,统一从阿里云账户中扣除一次免费额度。免费额度用完后,阿里云账单系统将根据调用量开始计费。
RAM账号是由阿里云账号创建并授权,需要确保RAM账号拥有AliyunOCRFullAccess权限,否则无法通过该账号开通服务。
前往RAM权限列表查看RAM账号拥有的权限。
接下来,您可以将SDK集成到业务系统中,使用免费额度进行OCR效果批量评测。
在线调用测试
调用SDK
以OCR统一识别服务进行身份证识别为例,介绍SDK集成和调用流程。
获取访问密钥
集成SDK前,请确保您已获取访问密钥(AccessKey,简称AK)。通过SDK调用阿里云服务时,发起的请求会携带AccessKey ID和AccessKey Secret加密请求内容生成的签名,进行身份验证及请求合法性校验。
将鼠标悬浮在控制台右上方的账号图标上,单击AccessKey管理。
在AccessKey页面,查看AccessKey信息。
如果AccessKey列表为空或者没有已启用的AccessKey,前往创建AccessKey。
选择开发语言
选择您需要的语言调用文字识别API服务。
Java
步骤 1:配置Java环境
步骤 2:调用文字识别OCR接口
运行以下代码调用文字识别API:
import com.aliyun.ocr_api20210707.models.RecognizeAllTextResponse;
import com.aliyun.tea.*;
public class Sample {
public static com.aliyun.ocr_api20210707.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
return new com.aliyun.ocr_api20210707.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.ocr_api20210707.Client client = Sample.createClient();
com.aliyun.ocr_api20210707.models.RecognizeAllTextRequest recognizeAllTextRequest = new com.aliyun.ocr_api20210707.models.RecognizeAllTextRequest()
.setUrl("https://img.alicdn.com/tfs/TB1q5IeXAvoK1RjSZFNXXcxMVXa-483-307.jpg")
.setType("IdCard");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
RecognizeAllTextResponse resp = client.recognizeAllTextWithOptions(recognizeAllTextRequest, runtime);
System.out.println(com.aliyun.teautil.Common.toJSONString(resp.body.data));
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
Python
步骤 1:配置 Python 环境
配置虚拟环境(可选)
步骤 2:调用文字识别OCR接口
您可以新建一个Python文件,命名为hello_ocr.py
,将以下代码复制到hello_ocr.py
中并保存。
# -*- coding: utf-8 -*-
import os
import sys
from typing import List
from alibabacloud_ocr_api20210707.client import Client as ocr_api20210707Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ocr_api20210707 import models as ocr_api_20210707_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> ocr_api20210707Client:
config = open_api_models.Config(
# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
config.endpoint = f'ocr-api.cn-hangzhou.aliyuncs.com'
return ocr_api20210707Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
recognize_all_text_request = ocr_api_20210707_models.RecognizeAllTextRequest(
url='https://img.alicdn.com/tfs/TB1q5IeXAvoK1RjSZFNXXcxMVXa-483-307.jpg',
type='IdCard'
)
runtime = util_models.RuntimeOptions()
try:
resp = client.recognize_all_text_with_options(recognize_all_text_request, runtime)
print(resp.body.data)
except Exception as error:
# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
# 错误 message
print(error.message)
# 诊断地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
recognize_all_text_request = ocr_api_20210707_models.RecognizeAllTextRequest(
url='https://img.alicdn.com/tfs/TB1q5IeXAvoK1RjSZFNXXcxMVXa-483-307.jpg',
type='IdCard'
)
runtime = util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印 API 的返回值
await client.recognize_all_text_with_options_async(recognize_all_text_request, runtime)
except Exception as error:
# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
# 错误 message
print(error.message)
# 诊断地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
Go
步骤 1:配置 Go环境
步骤 2:调用文字识别OCR接口
您可以新建一个Go文件,命名为hello_ocr.go
,将以下代码复制到hello_ocr.go
中并保存。
package main
import (
"encoding/json"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
ocr_api20210707 "github.com/alibabacloud-go/ocr-api-20210707/v3/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"os"
"strings"
)
func CreateClient() (_result *ocr_api20210707.Client, _err error) {
config := &openapi.Config{
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
config.Endpoint = tea.String("ocr-api.cn-hangzhou.aliyuncs.com")
_result = &ocr_api20210707.Client{}
_result, _err = ocr_api20210707.NewClient(config)
return _result, _err
}
func _main(args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
recognizeAllTextRequest := &ocr_api20210707.RecognizeAllTextRequest{
Url: tea.String("https://img.alicdn.com/tfs/TB1q5IeXAvoK1RjSZFNXXcxMVXa-483-307.jpg"),
Type: tea.String("IdCard"),
}
runtime := &util.RuntimeOptions{}
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
resp, _err := client.RecognizeAllTextWithOptions(recognizeAllTextRequest, runtime)
if _err != nil {
return _err
}
fmt.Println(resp.Body.Data)
return nil
}()
if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
fmt.Println(tea.StringValue(error.Message))
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return _err
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}