OCR识别
更新时间:2026-01-06
OCR(Optical Character Recognition)能力基于深度学习图像识别模型,可从图片或视频内容中自动识别文字信息,支持从文档、屏幕截图、广告牌等媒资中提取文字内容,并产出结构化文本。本能力可广泛应用于文档解析、字幕生成、内容审核、文本搜索等场景。
每次调用输入一个媒资(图片 / 视频),输出识别出的文字内容。目前支持视频和图片OCR
1. OCR处理
触发OCR之前必须将媒资上传到VOD中,若已经上传直接查看1.2 直接配置方式(1步) ,若还未上传,则需要调用上传并配置工作流,参考1.1 拉取上传方式(2步)。
- 视频OCR的工作流ID:fmhqzeapfu728838tzj3
- 图片OCR的工作流ID:fmqpupdg3kj829mbrd6n
若想降低成本,可以配置过期时间,过期时间到达后,该媒资将会被自动删除。但注意OCR结果也会一并删除
1.1 拉取上传方式(2步)
1.1.1 拉取上传并配置OCR工作流
请求结构
Http
1POST /v2/medias/fetch HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
8
9{
10 // 请求参数
11}
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| url | string | 是 | RequestBody参数 | 拉取文件url,长度不超过1024,支持的文件封装格式(url末尾的文件名后缀):
|
| name | string | RequestBody参数 | 媒资名称,如果不指定name,将会从url中提取文件名作为生成的媒资名称 | |
| categoryId | string | RequestBody参数 | 分类ID,用于设置媒资分类 | |
| workflow | MediaWorkflowTaskInput | 是 | RequestBody参数 | 媒资工作流处理参数,
|
| deleteAfterSeconds | long | RequestBody参数 | 配置媒资过期时间,过期后自动删除,单位s,取值 [3600, 180 * 24 * 3600],即1小时到180天 |
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| taskId | string | 拉取上传的任务ID,可以通过此ID查询到OCR工作流任务ID |
示例
请求内容
Http
1POST /v2/medias/fetch HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
9
10{
11 "url": "https://vod.com/demo.mp4?authorization=xxx",
12 "name": "OCR_test",
13 "deleteAfterSeconds": "24 * 3600",
14 "workflow": {
15 "workflowId": "fmhqzeapfu728838tzj3"
16 }
17}
返回内容
Http
1HTTP/1.1 200 OK
2Transfer-Encoding: chunked
3x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
4Cache-Control: no-cache
5Date: Tue, 24 Mar 2024 13:08:44 GMT
6Content-Type: application/json;charset=UTF-8
7
8{
9 "taskId": "tsk-emdjf2brktngm326"
10}
1.1.2 查询拉取上传任务获取工作流任务ID
此接口查询除了能拿到媒资的mediaId和源信息之后,还能拿到OCR工作流任务ID(workflowTaskId),后续可以通过该任务ID查询OCR结果。
请求结构
Http
1GET /v2/tasks/{taskId} HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| taskId | string | 是 | Path参数 | 拉取任务ID |
返回参数
参考 MediaTaskDetail 结构定义。具体可以看示例中返回内容更容易理解。 重点是能拿到mediaFetchTaskInfo.workflowTaskId
示例
请求内容
Http
1GET /v2/tasks/tsk-fmms9tyg6qdwnhw0 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
返回内容
Http
1{
2 "taskId": "tsk-fmms9tyg6qdwnhw0",
3 "type": "FETCH",
4 "status": "SUCCESS",
5 "createTime": "2025-12-12T08:03:10Z",
6 "finishTime": "2025-12-12T08:03:19Z",
7 "mediaFetchTaskInfo": {
8 "url": "https://vod.com/demo.mp4?authorization=xxx",
9 "mediaBasicInfo": {
10 "mediaId": "mda-fmmsh2qcm2v8rp00",
11 "name": "fmkk8nxmchfmafvprxx1",
12 "description": "",
13 "mediaType": "video",
14 "banStatus": "NORMAL",
15 "createTime": "2025-12-12T08:03:18Z",
16 "expireTime": "2025-12-12T09:03:18Z",
17 "categoryId": "system",
18 "tags": [],
19 "source": {
20 "bucket": "vod-em5xuw1affk1r014",
21 "sourceKey": "mda-fmmsh2qcm2v8rp00/_src/mda-fmmsh2qcm2v8rp00/fmms7z1yawggbejuaspi.mp4",
22 "coverKey": "",
23 "sourceType": "FETCH",
24 "sourceUrl": "https://vod.com/demo.mp4?authorization=xxx"
25 },
26 "sourceMetadata": {
27 "fileSizeInByte": 18877390,
28 "type": "video",
29 "container": "mov,mp4,m4a,3gp,3g2,mj2",
30 "durationInSecond": 93,
31 "durationInMillisecond": 93250,
32 "video": {
33 "codec": "h264",
34 "heightInPixel": 1136,
35 "widthInPixel": 640,
36 "bitRateInBps": 1484198,
37 "frameRate": 25.0,
38 "dar": "9:16"
39 },
40 "audio": {
41 "codec": "aac",
42 "channels": 2,
43 "sampleRateInHz": 48000,
44 "bitRateInBps": 129943
45 },
46 "etag": "bbf8a2f35d80fb578ba49d627d824f17"
47 }
48 },
49 "workflowTaskId": "tsk-fmms8nje1d5gmx54"
50 }
51}
1.2 直接配置方式(1步)
1.2.1 配置OCR工作流获取工作流任务ID
已经上传完媒资,则直接可以通过媒资处理接口进行媒资的OCR。
请求结构
Http
1POST /v2/medias/process HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
8
9{
10 // 请求参数
11}
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| mediaId | string | 是 | RequestBody参数 | 媒资ID |
| workflow | MediaWorkflowTaskInput | 是 | RequestBody参数 | 媒资工作流处理参数,
|
返回参数
| 参数 | 类型 | 描述 |
|---|---|---|
| taskId | string | 拉取上传的任务ID,可以通过此ID查询到OCR工作流任务ID |
| mediaId | string | 媒资ID |
示例
请求内容
Http
1GET /v2/tasks/tsk-fmms9tyg6qdwnhw0 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
9
10{
11 "mediaId": "mda-fmjsgzs13rb0ry4r",
12 "workflow": {
13 "workflowId": "fmhqzeapfu728838tzj3"
14 }
15}
返回内容
Http
1{
2 "mediaId": "mda-fmjsgzs13rb0ry4r",
3 "taskId": "tsk-fmkw31pknpnh10e0"
4}
2. 查询OCR工作流任务
OCR工作流任务中包含多个节点,仅OCR计费,其他节点不计费可以忽略。
请求结构
Http
1GET /v2/tasks/{taskId} HTTP/1.1
2connection: keep-alive
3host: vod.bj.baidubce.com
4content-type: application/json
5x-bce-request-id: <bce-request-id>
6x-bce-date: <utc-date-string>
7authorization: <bce-authorization-string>
请求参数
| 参数 | 类型 | 是否必需 | 参数位置 | 描述 |
|---|---|---|---|---|
| taskId | string | 是 | Path参数 | 拉取任务ID |
返回参数
参考 MediaTaskDetail 结构定义。具体可以看示例中返回内容更容易理解。 重点关注understandingNodeTaskInfos字段。
- 视频OCR,结果输出dialogSubtitleUrl和introSubtitleUrl为对白字幕SRT的URL和画面字幕SRT的URL。
- 图片OCR,结果输出url为图片信息JSON
示例
请求内容
Http
1GET /v2/tasks/tsk-fmsurfx2dt487it4tsk-fmmsv9nk3zkpty98 HTTP/1.1
2host: vod.bj.baidubce.com
3accept: */*
4connection: keep-alive
5content-type: application/json
6x-bce-request-id: 6bae5cb3-97d1-4b1a-b8b6-0ad577c1d481
7x-bce-date: 2024-03-24T13:08:44Z
8authorization: bce-auth-v1/46bd9968a6194b4bbdf0341f2286ccce/2024-03-24T13:08:44Z/1800/host;x-bce-date/7e21c9cf1e4e2cc6921a407a388fe98df122c53b9f509043d841be76eb09a1f9
返回内容
Http
1{
2 "taskId": "tsk-fmsurfx2dt487it4",
3 "type": "WORKFLOW",
4 "status": "FINISHED",
5 "createTime": "2025-12-17T10:05:04Z",
6 "finishTime": "2025-12-17T10:07:21Z",
7 "mediaWorkflowTaskInfo": {
8 "mediaId": "mda-fmqx93pgxajyciji",
9 "workflowId": "fmhqzeapfu728838tzj3",
10 "startNodeTaskInfo": {
11 "nodeId": "fmhq8wx0pjmbx7fe23w3",
12 "nodeName": "输入",
13 "status": "SUCCESS"
14 },
15 "transcodeNodeTaskInfos": [
16 {
17 "nodeId": "fmhqn1kfp4qjic1wqm7v",
18 "nodeName": "转码720P",
19 "transcodeTaskInfo": {
20 "mediaId": "mda-fmqx93pgxajyciji",
21 "status": "SUCCESS",
22 "transcodeInput": {
23 "presetId": "ffkw4ijqidzg1up7eq7k"
24 },
25 "transcodeOutput": {
26 "id": "ffkw4ijqidzg1up7eq7k",
27 "url": "https://ehrtt5psqrsjiec7xeiv.exp.bcevod.com/mda-fmqx93pgxajyciji/_output/transffkw4ijqidzg1up7eq7k/mda-fmqx93pgxajyciji.mp4",
28 "meta": {
29 "video": {
30 "durationInSeconds": 105,
31 "durationInMilliSeconds": 105344,
32 "sizeInKiloByte": 27735.024414,
33 "widthInPixel": 720,
34 "heightInPixel": 1280,
35 "bitRateInBps": 2156794,
36 "frameRate": 30,
37 "gopAlign": false,
38 "mp4MoovSize": 37713
39 },
40 "audio": {
41 "sampleRateInHz": 48000,
42 "channels": 2
43 }
44 }
45 }
46 }
47 }
48 ],
49 "understandingNodeTaskInfos": [
50 {
51 "nodeId": "fmhq5f2jdqnv286imgdb",
52 "nodeName": "OCR",
53 "understandingTaskInfo": {
54 "jobId": "job-fmsuwjhj914wbz9h",
55 "mediaId": "mda-fmqx93pgxajyciji",
56 "status": "SUCCESS",
57 "understandingOutput": {
58 "url": "https://ehrtt5psqrsjiec7xeiv.exp.bcevod.com/mda-fmqx93pgxajyciji/_output/understand/mda-fmqx93pgxajyciji_source_subtitle_dialog_srt.srt",
59 "dialogSubtitleUrl": "https://ehrtt5psqrsjiec7xeiv.exp.bcevod.com/mda-fmqx93pgxajyciji/_output/understand/mda-fmqx93pgxajyciji_source_subtitle_dialog_srt.srt",
60 "introSubtitleUrl": "https://ehrtt5psqrsjiec7xeiv.exp.bcevod.com/mda-fmqx93pgxajyciji/_output/understand/mda-fmqx93pgxajyciji_source_subtitle_intro_srt.srt"
61 }
62 }
63 }
64 ],
65 "publishNodeTaskInfo": {
66 "nodeId": "fmhqd26mwqbhfjvuycey",
67 "nodeName": "发布",
68 "status": "SUCCESS"
69 }
70 }
71}
视频OCR返回SRT格式
Plain Text
11
200:00:00,000 --> 00:00:00,950
3放开我孙儿
4
52
600:00:00,950 --> 00:00:01,350
7不要啊
8
93
1000:00:03,550 --> 00:00:04,750
11放开我的孙儿
图片OCR返回JSON格式
Plain Text
1[
2 {
3 "text": "正在热播",
4 "location": {
5 "left": 0,
6 "top": 352,
7 "width": 787,
8 "height": 276
9 }
10 }
11]
