文字识别 OCR 附加组件利用 AI 能力,可将图片中的文字信息转换为可编辑文本。该组件支持通用印刷体和营业执照识别场景,为您提供文字内容(支持简体中文和英文)及文字框坐标,从而提高您的信息处理效率。本文介绍如何使用文字识别 OCR 附加组件。
为确保能够生成图像,请满足以下限制。
调用同步处理接口 AIProcess,提交一条 URL 或 URI 资源执行同步 AI 图像处理任务。
请求示例
POST https://imagex.volcengineapi.com/?Action=AIProcess&Version=2023-05-01 { "ServiceId": "91**2g", // 必选。服务 ID。 "WorkflowTemplateId": "system_workflow_image_ocr", // 必选。模板 ID。 "WorkflowParameter": "{\"Input\":{\"ObjectKey\":\"example.webp\",\"DataType\":\"uri\"},\"OCRParam\":{\"ModelId\":\"default\",\"Scene\":\"general\"}}" // 必选。模板参数。 }
其中,
ServiceId:服务 ID,可从服务管理页面获取。WorkflowTemplateId:取值固定为 system_workflow_image_ocr。WorkflowParameter:根据输入参数,设置该参数取值。返回示例
{ "ResponseMetadata": { "RequestId": "20230604110420****100232280022D31", "Action": "AIProcess", "Version": "2023-05-01", "Service": "ImageX", "Region": "cn-north-1" }, "Result": { "Output": "{\"Scene\":\"general\",\"GeneralResult\":{\"Content\":\"TEST\",\"Location\":[[64,57],[140,57],[140,87],[64,87]],\"Confidence\":0.999030}}" } }
Output 的参数含义详见输出参数。
批量执行 AI 图像处理任务。
注意
确保已新建并启动批量处理任务队列。详见步骤一:新建并启动任务队列。
调用异步处理接口 CreateImageAITask,创建批量处理任务。
请求示例
POST https://imagex.volcengineapi.com/?Action=CreateImageAITask&Version=2023-05-01 { "ServiceId": "5s****fo", // 必选。服务 ID。 "DataType": "uri", // 必选。图片地址类型,支持取值 uri 和 url。 "DataList": [ "a.png", "uridemo.png" ], // 必选。图片 URI 或 URL 列表(URI 不包含 tos-*-i-* 前缀)。 "CallbackConf": { // 可选。回调配置。 "Method": "HTTP", // 必选。回调方式,取值固定为 HTTP。 "Endpoint": "https://demo.com", // 必选。回调地址,用于接收处理结果。 "DataFormat": "JSON", // 可选。回调数据格式,支持取值 XML 和 JSON。 "Args": "product id", // 可选。业务自定义回调参数。 "Type": "task" // 可选。回调触发类型,支持取值 task 和 entry。默认值为 entry。 }, "WorkflowParameter": "{\"OCRParam\":{\"ModelId\":\"default\",\"Scene\":\"general\"}}", // 必选。模板参数。 "WorkflowTemplateId": "system_workflow_image_ocr", // 必选。模板 ID。 "QueueId": "62f224ce61****826e38c29a" // 必选。队列 ID。 }
其中,
WorkflowTemplateId:取值固定为 system_workflow_image_ocr。WorkflowParameter:根据输入参数,设置该参数取值。{ "ResponseMetadata": { "RequestId": "20230604110420****100232280022D31", "Action": "CreateImageAITask", "Version": "2023-05-01", "Service": "ImageX", "Region": "cn-north-1" }, "Result": { "TaskId": "649b9d3****5537684010a7", // 任务 ID。 "QueueId": "62f224ce61****826e38c29a" // 队列 ID。 } }
通过以下任一方式获取图像处理结果。
Endpoint),则当任务完成后,veImageX 会向该回调地址发送回调消息。详见回调。veImageX 提供了以下编程语言的 SDK,方便您调用 API。
调用接口前,请先完成 Golang SDK 的安装及初始化操作。
提交一条 URL 或 URI 资源执行同步 AI 图像处理任务。详见同步处理。
package imagex_test import ( "context" "encoding/json" "fmt" "testing" "github.com/volcengine/volc-sdk-golang/base" imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2" ) func Test_AIProcess(t *testing.T) { instance := imagex.NewInstance() instance.SetCredential(base.Credentials{ // 强烈建议不要把 ak 和 sk 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 ak 和 sk,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ak 和 sk。 AccessKeyID: "ak", SecretAccessKey: "sk", }) param := &imagex.AIProcessReq{ AIProcessBody: &imagex.AIProcessBody{ ServiceID: "91**2g", // 必选。服务 ID。 WorkflowTemplateID: "system_workflow_image_ocr", // 必选。模板 ID。固定取值。 WorkflowParameter: "{\"Input\":{\"ObjectKey\":\"a.png\",\"DataType\":\"uri\"},\"OCRParam\":{\"ModelId\":\"default\",\"Scene\":\"general\"}}", // 必选。根据本文模板说明 > 输入参数,设置该参数取值。 }, } resp, err := instance.AIProcess(context.Background(), param) if err != nil { fmt.Printf("error %v", err) } else { t, _ := json.Marshal(resp) fmt.Printf("success %v", string(t)) } }
创建批量处理任务。接口参数说明详见 CreateImageAITask。
package imagex_test import ( "context" "encoding/json" "fmt" "testing" "github.com/volcengine/volc-sdk-golang/base" imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2" ) func Test_CreateImageAITask(t *testing.T) { instance := imagex.NewInstance() instance.SetCredential(base.Credentials{ // 强烈建议不要把 ak 和 sk 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 ak 和 sk,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ak 和 sk。 AccessKeyID: "ak", SecretAccessKey: "sk", }) param := &imagex.CreateImageAITaskReq{ CreateImageAITaskBody: &imagex.CreateImageAITaskBody{ ServiceID: "5s****fo", // 必选。服务 ID。 QueueID: "649a9dbc32**064d44cf5b0", // 必选。队列 ID。 DataType: "uri", // 必选。图片地址类型,支持取值 uri 和 url。 DataList: []string{"a.png", "uridemo.png"}, // 必选。图片 URI 或 URL 列表(URI 不包含 tos-*-i-* 前缀)。 CallbackConf: &imagex.CreateImageAITaskBodyCallbackConf{ // 可选。回调配置。 Method: "HTTP", // 必选。回调方式,取值固定为 HTTP。 Endpoint: "https://demo.com", // 必选。回调地址,用于接收处理结果。 DataFormat: "JSON", // 可选。回调数据格式,支持取值 XML 和 JSON。 Args: "productid", // 可选。业务自定义回调参数。 Type: "task", // 可选。回调触发类型,支持取值 task 和 entry。默认值为 entry。 }, WorkflowParameter: "{\"OCRParam\":{\"ModelId\":\"default\",\"Scene\":\"general\"}}", // 必选。根据本文模板说明 > 输入参数,设置该参数取值。 WorkflowTemplateID: "system_workflow_image_ocr", // 必选。模板 ID。固定取值。 }, } resp, err := instance.CreateImageAITask(context.Background(), param) if err != nil { fmt.Printf("error %v", err) } else { t, _ := json.Marshal(resp) fmt.Printf("success %v", string(t)) } }
通过以下任一方式获取图像处理结果。
package imagex_test import ( "context" "encoding/json" "fmt" "testing" "github.com/volcengine/volc-sdk-golang/base" imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2" ) func Test_GetImageAIDetails(t *testing.T) { instance := imagex.NewInstance() instance.SetCredential(base.Credentials{ // 强烈建议不要把 ak 和 sk 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 ak 和 sk,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ak 和 sk。 AccessKeyID: "ak", SecretAccessKey: "sk", }) param := &imagex.GetImageAIDetailsQuery{ QueueID: "649a9dbc32**064d44cf5b0", // 必选。队列 ID。 TaskID: "67174744a**54449623155b9", // 必选。任务 ID。 StartTime: 1684713599, // 必选。查询开始时间。Unix 秒级时间戳。 EndTime: 1684913599, // 必选。查询结束时间。Unix 秒级时间戳。 Status: "Success", // 可选。任务执行状态。默认返回所有任务。 SearchPtn: "test", // 可选。图片 URI 或 URL 关键字。默认返回所有任务。 Limit: 10, // 必选。分页条数。取值范围为 (0, 100]。 Offset: 0, // 可选。分页偏移量。 ServiceID: "5s****fo", // 必选。服务 ID。 } resp, err := instance.GetImageAIDetails(context.Background(), param) if err != nil { fmt.Printf("error %v", err) } else { t, _ := json.Marshal(resp) fmt.Printf("success %v", string(t)) } }
veImageX 提供了以下编程语言的 SDK,方便您调用 API。详见方式一:通过调用服务端 SDK 获取资源地址(推荐)。
在资源管理页面完成以下操作,获取资源地址。
system_workflow_image_ocr
您需要将输入参数序列化为 JSON 字符串后,作为同步处理接口 AIProcess 或异步处理接口 CreateImageAITask 的 WorkflowParameter 参数传入,或作为批量处理时的模板配置参数传入。
参数 | 类型 | 是否必选 | 示例值 | 说明 |
|---|---|---|---|---|
Input
| Object | 否 | - | 输入图像的信息。 仅在调用同步处理接口 AIProcess 时必选。 |
OCRParam | Object | 是 | - | 文字识别 OCR 参数。 |
veImageX 服务会将输出参数序列化为 JSON 字符串后作为 AIProcess 接口、回调或 GetImageAIDetails 接口的 Output 参数返回。
参数 | 类型 | 示例值 | 说明 |
|---|---|---|---|
Scene | String |
| 图像 OCR 的识别场景。取值如下:
|
GeneralResult | List of <GeneralTextInfo> | {"Content":"TEST","Location":[[64,57],[140,57],[140,87],[64,87]],"Confidence":"0.999030"} |
|
LicenseResult | Map<String,GeneralTextInfo> | {"USCC":{"Content":"91330100****100Y43","Location":[[100, 50], [300, 50], [300, 80], [100, 80]]}, "address":{"Content":"北京市海淀区xx科技园","Location":[[100, 90], [400, 90], [400, 120], [100, 120]]}, "capital":{"Content":"1000万元人民币","Location":[[100, 130], [300, 130], [300, 160], [100, 160]]}, "corporation":{"Content":"张三","Location":[[100, 170], [200, 170], [200, 200], [100, 200]]}, "expiry_date":{"Content":"2030-12-31","Location":[[100, 210], [250, 210], [250, 240], [100, 240]]}, "name":{"Content":"北京市某某科技有限公司","Location":[[100, 20], [450, 20], [450, 50], [100, 50]]}, "register_date":{"Content":"2010-01-01","Location":[[100, 250], [250, 250], [250, 280], [100, 280]]}, "scope":{"Content":"技术开发、技术咨询、技术服务","Location":[[100, 290], [500, 290], [500, 350], [100, 350]]}} | 当
|
参数 | 类型 | 示例值 | 说明 |
|---|---|---|---|
Content | String | TEST | 文字内容。 |
Location | [][]int | [[64,57],[140,57],[140,87],[64,87]] | 以图片左上角为坐标原点,按左上、右上、右下、左下的顺序提供文字框的坐标。 |
Confidence | Float | 0.999030 | 识别结果的可信度,取值范围为 [0,1]。数值越高,表示结果越可信。 说明 仅在 |