图片转文档
图片转 Office、文本与识别结果 JSON;公式识别、合并等功能以各渠道正文为准。
概述
使用流程
由于转换需要时间,文件越大页数越多,转换越久,故默认采用异步的方式获得转换结果。即调用转换接口后会获得token,随后有2种方式查询转换结果:
调用转换接口
v1和v2接口功能相同,调用方式不一样。v2支持同步转换,v1不支持,推荐用v2接口。
v2接口统一为HTTP POST JSON:
- JSON支持输入:文件url;文件Base64字符串;多张图片的url。见:文档转换_v2
- v2版本的API除了异步,还支持同步调用,见:同步调用
- v2版本中的参数如果未出现在v1版本中,v1版本用同样参数也能工作
v1接口包括3种转换方式:
- 一张图片转为文档,图片是一个下载链接,用HTTP GET方式,见:单图转换GET_v1
- 一张图片转为文档,图片POST到服务器,用HTTP POST Form Data方式,见:单图转换POST_v1
- 多张图片转为文档,图片是多个下载链接,用HTTP POST JSON方式,见:多图转换POST_v1
同时支持单图 公式转换
提供Office文档合并功能,用于合并单个转出的Word,PPT或Excel文件 Office文档合并POST
输出以下文件格式:
| 类型 | 扩展名 |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
调用转换API需要签名,详细见文档附录:阿里签名 调用查询结果API无需签名。
阿里云支持从OSS内网直接下载文件,节约流量,见:阿里云独有部分
图片转换_v2
异步url:
https://img2doc.market.alicloudapi.com/v2/convert_async
同步url:
https://img2doc.market.alicloudapi.com/v2/convert_sync
HTTP方式: POST
Header中的Content-Type传入application/json
Body是JSON格式,支持以下3种输入源文件的方法:
方法1: 图片url:
{"input": "http://xxx.jpg", "type": "docx"}
方法2: 图片Base64字符串,Base64字符串最大8M:
{"input": "base64字符串", "type": "docx"}
方法3: 多张图片url:
{"input": ["http://xxx.jpg", "http://xxx.png"], "type": "docx"}
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
自定义参数:
| 参数 | 类型 | 备注 | 默认值 |
| type | string | 小写,需转换为的文件类型,例如docx | 必须发送 |
| 输出文件相关 | |||
| language_code | string | OCR识别语言,默认简体中文:ch 支持近80种语言,具体参考OCR支持语言 |
ch |
| dewarp | int | 是否切边矫正,默认0否,1是。如果打开,每次只允许传入一张图(图片分辨率短边大于20,长边小于10000) | 0 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
0 |
| norotate | int | 是否根据文字方向自动旋转图片,默认0: 自动判断,1: 不旋转。如果确定图片中的文字方向则传1,速度更快 | 0 |
| a4 | int | 是否输出A4大小文件,默认0否,1是。仅在pagesize为0时生效 | 0 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 当不为0时,a4参数失效 |
0 |
| qr | int | 是否识别条码和二维码。如果type是json,会输出条码和二维码。 其他type会避开码所在区域,识别更精准。 |
0 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 0 |
| outfilename | string | 生成的文件的文件名,默认随机 | 空 |
| 输出Office文件相关 | |||
| wordnoimage | int | 如果转为Word文件,默认0:需要图片;1:不需要图片 | 0 |
| wordabsolutelayout | int | 如果转为Word文件,默认0:流式布局;1:绝对布局(位置精准,浏览方便,但是编辑方式非流式不利于编辑) | 0 |
| excelonesheet | int | 如果转为Excel文件,默认0:每张图一个工作表;1:合成一个工作表 | 0 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
0 |
| 输出文本文件相关 | |||
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 0 |
| textperpage | int | 如果转为Txt文本,默认0:所有页转为单个txt文件,1:每一页转为一个txt文件,并且打包为一个zip包 | 0 |
| 其他 | |||
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 空 |
请求示例:
- 例1: 把单张图片转为word
{"input": "http://xxx.jpg", "type": "docx"}
- 例2: 把单张图片保留背景,识别表格,自动判断文字方向,转为ppt
{"input": ["http://xxx.jpg"], "type": "pptx", "clean": 2, "table": 1, "norotate": 0}
- 例3: 把2张图片每一张转为单独的txt文件
{"input": ["http://xxx.jpg", "http://xxx.png"], "textperpage": 1}
返回数据结构【异步】:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态)【异步】:
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态)【异步】:
{
"code":40001,
"msg":"ParmNotRight"
}
同步调用
同步调用的最大返回时间是60秒,如果60秒内转换结束则直接返回结果。否则会返回token,之后和异步方式一样可以调用查询结果接口查询该token的转换结果。所以同步调用如果传入的文件过大,无法保证在60秒内结束,则转为异步流程。
返回数据结构【同步】:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| token | string | 是 | 请求的token |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| fileurl | 输出文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| count | 总图片数 | integer | 否(status为Done时返回) | 图片总数 |
| filesize | 文件大小 | integer | 否(status为Done时返回) | 输出文件大小 |
| status | 状态 | string | 是 | Done:转换成功 Failed:转换失败 |
返回示例(成功状态)【同步】:
{
"code": 10000,
"msg": "",
"result": {
"count": 1,
"filesize": 17747,
"fileurl": "https://file.duhuitech.com/o/xxx/xxx.docx",
"status": "Done"
},
"token": "YOUR_CREDENTIAL"
}
返回示例(超时状态)【同步】:
{
"code": 40500,
"msg": "Timeout, query token later",
"token": "YOUR_CREDENTIAL"
}
查询结果
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 调用转换接口拿到的token | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。 查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| token | string | 是 | 请求的token |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number | 否(status为Doing时返回) | 范围:0.00 - 1.00, 比如0.88表示88% |
| fileurl | 输出文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| count | 总图片数 | integer | 否(status为Done时返回) | 图片总数 |
| filesize | 文件大小 | integer | 否(status为Done时返回) | 输出文件大小 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx",
"filesize":17747,
"count":1
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
公式转换POST
将一张图片转换为一个文档,可以是url传入一张图片的地址,也可以是file参数传入图片的Base64。高精度识别公式,可以转换为公式可编辑的word文件,或者markdown文件。注意版式不会保留。
传入JSON字符串,POST方式
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 要转换的图片URL,支持http(s),ftp开头 | 是(url和file2选1) |
| file | string | 要转换的图片的Base64数据字符串,最大8M | 是(url和file2选1) |
| type | string | 小写,需转换为的文件类型,docx或md | 是 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 否 |
请求示例:
https://img2doc.market.alicloudapi.com/v1/formula
传入的Body为JSON格式,例如:
{"url": "http://xxx/xxx.png", "type": "docx"}
或者Base64,大小限制8M
{"file": "iVBORw0KGgoAAAAN......", "type": "md"}
输出文件类型type可取值:docx, md。
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
支持几乎所有图片格式
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
Office文档合并POST
将多个Office文档合并为一个文档,url传入多个文档的地址。支持docx, pptx, xlsx格式。
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string数组 | 要转换的文档URL数组,支持http(s),ftp开头 | 是 |
| type | string | 小写,合并文档的类型,例如docx。如果为空,取第一个url的扩展名 | 否 |
请求示例:
https://img2doc.market.alicloudapi.com/v1/mergedoc
传入的Body为JSON格式,如下:
{"url": ["http://xxx/xxx1.docx", "http://xxx/xxx2.docx"]}
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
OCR支持语言
| 语言 | language_code | 语言 | language_code | 语言 | language_code |
|---|---|---|---|---|---|
| 中文 | ch | 英文 | en | 法文 | fr |
| 德文 | de | 日文 | japan | 韩文 | korean |
| 中文繁体 | chinese_cht | 意大利文 | it | 西班牙文 | es |
| 葡萄牙文 | pt | 俄罗斯文 | ru | 阿拉伯文 | ar |
| 印地文 | hi | 维吾尔 | ug | 波斯文 | fa |
| 乌尔都文 | ur | 塞尔维亚文(latin) | rs_latin | 欧西坦文 | oc |
| 马拉地文 | mr | 尼泊尔文 | ne | 塞尔维亚文(cyrillic) | rs_cyrillic |
| 毛利文 | mi | 马来文 | ms | 马耳他文 | mt |
| 荷兰文 | nl | 挪威文 | no | 波兰文 | pl |
| 罗马尼亚文 | ro | 斯洛伐克文 | sk | 斯洛文尼亚文 | sl |
| 阿尔巴尼亚文 | sq | 瑞典文 | sv | 西瓦希里文 | sw |
| 塔加洛文 | tl | 土耳其文 | tr | 乌兹别克文 | uz |
| 越南文 | vi | 蒙古文 | mn | 车臣文 | che |
| 哈里亚纳语 | bgc | 保加利亚文 | bg | 乌克兰文 | uk |
| 白俄罗斯文 | be | 泰卢固文 | te | 阿巴扎文 | abq |
| 泰米尔文 | ta | 南非荷兰文 | af | 阿塞拜疆文 | az |
| 波斯尼亚文 | bs | 捷克文 | cs | 威尔士文 | cy |
| 丹麦文 | da | 爱沙尼亚文 | et | 爱尔兰文 | ga |
| 克罗地亚文 | hr | 匈牙利文 | hu | 印尼文 | id |
| 冰岛文 | is | 库尔德文 | ku | 立陶宛文 | lt |
| 拉脱维亚文 | lv | 达尔瓦文 | dar | 因古什文 | inh |
| 拉克文 | lbe | 莱兹甘文 | lez | 塔巴萨兰文 | tab |
| 比尔哈文 | bh | 迈蒂利文 | mai | 昂加文 | ang |
| 孟加拉文 | bho | 摩揭陀文 | mah | 那格浦尔文 | sck |
| 尼瓦尔文 | new | 保加利亚文 | gom | 梵文 | sa |
| 阿瓦尔文 | ava | 阿迪赫文 | ady | 巴利文 | pi |
| 拉丁文 | la |
输出JSON结构
样例:
{
"image_dewarped": "base64字符串",
"texts": [
{
"content": "发票号码:12345678",
"bbox": [100, 150, 300, 180]
},
{
"content": "金额:¥888.00",
"bbox": [200, 250, 350, 280]
}
],
"bars": [
{
"content": "123456789012",
"bbox": [400, 100, 560, 180],
"type": "EAN13",
"image": "base64字符串"
}
],
"pictures": [
{
"bbox": [50, 400, 200, 600],
"image": "base64字符串"
}
],
"tables": [
{
"bbox": [100, 700, 700, 1200]
}
],
"lines": [
{
"bbox": [80, 200, 400, 210]
},
{
"bbox": [80, 850, 700, 860]
}
]
}
说明
- JSON里的坐标左上方为原点(0,0),bbox代表矩形左上和右下坐标。
- 如果打开dewarp参数,则会产生新的dewarp图片,坐标基于该图。dewarp图片会存在image_dewarped字段,base64形式。
- 如果关闭dewarp参数,则坐标基于原图,image_dewarped字段不再有值。
- content字段是OCR后的文字内容。
- texts是OCR后的文字。
- bars支持条码和二维码,type返回值QRCODE, EAN13, EAN8, UPCA, UPCE, CODE39, CODE93, CODE128, ITF, CODABAR, PDF417, DATA MATRIX, AZTEC
- pictures是图片区域,image字段是base64字符串。
- tables是表格区域。
- lines是横线,bbox是两点坐标。
备注:
- 文件url方式支持文件大小 1500M。
- 多张图片转换为文档单次最高 50张 图片。
- 非长图,长或宽不得超过 8192像素。支持单张长图。
- 公式识别,图片宽高范围 30-4000 像素。
- 输出JSON仅支持单图,图片长或宽不得超过 8192像素
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途: 客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询查询结果。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和查询结果的结果相同,例如:
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx",
"filesize":17747,
"count":1
}
}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
阿里云独有部分:
支持从阿里云OSS内网直接下载文件,目前支持的是上海地区的阿里云OSS内网:
oss-cn-shanghai-internal.aliyuncs.com
文档转换GET或多张图片转换POST里的url地址包含上述域名则自动支持
错误码表:
返回的code如果是10000,代表成功,其余是失败
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
| 40500 | 同步调用超时 |
附录:阿里签名方式
参考链接:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
在调用API商品时,首先您需要了解采用哪种API认证方式,云市场API商品的认证方式主要有以下两种方式。两种方式可同时使用,您可以根据不同情况来选择。
简单身份认证(AppCode)
签名认证
简单身份认证(AppCode)
简单认证(AppCode)调用API,有两种方式,一种是将AppCode放在Header中进行调用,一种是将AppCode放在Query参数中进行调用。
方式一:将AppCode放在Header中
在请求Header中添加一个Authorization参数。
Authorization字段的值的格式为APPCODE + 半角空格 +APPCODE值。格式如下:
Authorization:APPCODE AppCode值
示例:
Authorization:APPCODE YOUR_CREDENTIAL
方式二:将AppCode放在Query中
在请求Query中添加AppCode参数(同时支持appcode , appCode , APPCODE , APPCode四种写法)。
AppCode参数的值为AppCode的值。
示例:
http://www.aliyum.com?AppCode=YOUR_CREDENTIAL
签名认证
比较复杂,推荐用阿里自己的SDK来调用,参考链接:https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/user-guide/use-digest-authentication-to-call-an-api
附录:旧v1接口
单图转换GET_v1
将一张图片下载链接url转换为其他格式,type是目标文档的类型,比如要转为docx,type就是docx
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是。仅在pagesize为0时生效 | 否 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 当不为0时,a4参数失效 |
否 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见 回调URL | 否 |
请求示例:
https://img2doc.market.alicloudapi.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.jpg&type=docx
将所在url地址的jpg文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
输出文件类型type可取值:doc, docx, pptx, xlsx, rtf, txt, ofd,md, json。
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
单图转换POST_v1
直接将单个图片POST到服务器,大小限制8M
请求参数:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大8M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同单图转换GET_v1 | 否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是。仅在pagesize为0时生效 | 否 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 当不为0时,a4参数失效 |
否 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 否 |
请求示例:
https://img2doc.market.alicloudapi.com/v1/convert_post
Header中的Content-Type必须是multipart/form-data
输出文件类型type可取值:doc, docx, pptx, xlsx, rtf, txt, ofd,md, json。
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
多图转换POST_v1
将多张图片转换为一个文档,url传入多张图片的地址,传入非图片格式无效。单次最多50张图片,不能有长图。
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string数组 | 要转换的图片URL数组,支持http(s),ftp开头 | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同单图转换GET_v1 | 否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是。仅在pagesize为0时生效 | 否 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 当不为0时,a4参数失效 |
否 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| excelonesheet | int | 如果转为Excel文件,默认0:每张图一个工作表;1:合成一个工作表 | 否 |
| textnoformat | int | 如果转为Txt文本,默认0: 保持原有布局,1:无需布局 | 否 |
| textperpage | int | 如果转为Txt文本,默认0:所有页转为单个txt文件,1:每一页转为一个txt文件,并且打包为一个zip包 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见 回调URL | 否 |
请求示例:
https://img2doc.market.alicloudapi.com/v1/convert
传入的Body为JSON格式,如下:
{"url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"], "type": "docx", "clean": 0, "a4": 0}
输出文件类型type可取值:**doc, docx, pptx, xlsx, rtf, txt, ofd, md **。
必须签名才能调用成功,签名见阿里签名规则:
https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/use-cases/call-apis
支持几乎所有图片格式
返回数据结构:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| code | number | 是 | 10000:请求成功 |
| msg | string | 是 | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 类型 | 是否必须返回 | 备注 |
|---|---|---|---|
| token | string | 是 | 用于查询结果接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
概述
2种转换方式
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见文档附录:百度签名
单图转换GET
将一张图片下载链接url转换为其他格式,type是目标文档的类型,比如要转为docx,type就是docx。
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| clean | int | 是否清除图像背景只显示文字,默认0否,1是 | 否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1:不旋转,0:自动判断。如果确定图片中的文字方向则传1,速度更快 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
https://img2doc.api.bdymkt.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.jpg&type=docx&ocr=0
将所在url地址的jpg文件转为docx,type就是需转换为的文件类型,这个例子里就是docx。
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
必须签名才能调用成功,签名见百度签名规则:
https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"result": {"token": "YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code": 40001,
"msg": "ParmNotRight"
}
多图转换POST
将多张图片转换为一个文档,url传入多张图片的地址,传入非图片格式无效。
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string数组 | 要转换的图片URL数组,支持http(s),ftp开头 | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| clean | int | 是否清除图像背景只显示文字,默认0否,1是 | 否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是 | 否 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger。当不为0时,a4参数失效 | 否 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,1:不旋转,0:自动判断。如果确定图片中的文字方向则传1,速度更快 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
https://img2doc.api.bdymkt.com/v1/convert
传入的Body为JSON格式,如下:
{
"url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"],
"type": "docx",
"clean": 0,
"a4": 0
}
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
多图转换不支持JSON结构输出。
必须签名才能调用成功,签名见百度签名规则:
https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4
支持几乎所有图片格式。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"result": {"token": "YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code": 40001,
"msg": "ParmNotRight"
}
输出JSON结构
当type取值为json时,接口返回单张图片的结构化识别结果。
样例:
{
"texts": [
{
"content": "发票号码:12345678",
"bbox": [100, 150, 300, 180]
},
{
"content": "金额:¥888.00",
"bbox": [200, 250, 350, 280]
}
],
"bars": [
{
"content": "123456789012",
"bbox": [400, 100, 560, 180],
"type": "EAN13",
"image": "base64字符串"
}
],
"pictures": [
{
"bbox": [50, 400, 200, 600],
"image": "base64字符串"
}
],
"tables": [
{
"bbox": [100, 700, 700, 1200]
}
],
"lines": [
{
"bbox": [80, 200, 400, 210]
},
{
"bbox": [80, 850, 700, 860]
}
]
}
说明
- JSON里的坐标左上方为原点(0,0),
bbox代表矩形左上和右下坐标。 content字段是OCR后的文字内容,texts是OCR后的文字区域。bars支持条码和二维码,type返回值包括QRCODE、EAN13、EAN8、UPCA、UPCE、CODE39、CODE93、CODE128、ITF、CODABAR、PDF417、DATA MATRIX、AZTEC。pictures是图片区域,image字段是base64字符串。tables是表格区域。lines是横线,bbox是两点坐标。- 输出JSON仅支持单图。
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"token": "YOUR_CREDENTIAL",
"result": {
"progress": 0.02,
"status": "Doing"
}
}
{
"code": 10000,
"msg": "",
"token": "YOUR_CREDENTIAL",
"result": {
"status": "Done",
"fileurl": "https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code": 40000,
"msg": "No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json。
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
附录:百度签名方式
参考链接:
https://cloud.baidu.com/doc/APIGW/s/Ljx2m1qc4
在调用API商品时,首先您需要了解采用哪种API认证方式。云市场API商品的认证方式主要有以下两种方式,两种方式可同时使用,您可以根据不同情况来选择:
- 简单身份认证(AppCode)
- 签名认证
简单身份认证(AppCode)
简单认证(AppCode)调用API,将AppCode放在Header中。在请求Header中添加一个X-Bce-Signature参数。
示例:
X-Bce-Signature: AppCode/YOUR_APPCODE
签名认证
签名认证比较复杂,推荐用百度自己的SDK来调用,参考链接:
概述
3种转换方式
- 单一图片转为文档,图片是一个下载链接,用HTTP GET方式,见:单图转换GET
- 单一图片转为文档,图片POST到服务器,用HTTP POST方式,见:单图转换POST
- 多个图片转为文档,图片是多个下载链接,用HTTP POST方式,见:多图转换POST
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见华为官方签名:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
单图转换GET
将一张图片下载链接url转换为其他格式,type是目标文档的类型,比如要转为docx,type就是docx。
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| clean | int | 是否清除图像背景只显示文字,默认0否,1是 | 否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
http://img2doc.apistore.huaweicloud.com/v1/convert?url=https%3a%2f%2fxxx%2fxxx.jpg&type=docx&ocr=0
将所在url地址的jpg文件转为docx,type就是需转换为的文件类型,这个例子里就是docx。
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
必须签名才能调用成功,签名见华为签名规则:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"result": {"token": "YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code": 40001,
"msg": "ParmNotRight"
}
单图转换POST
直接将单个图片POST到服务器,大小限制12M。
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大12M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| clean | int | 是否清除图像背景只显示文字,默认0否,1是 | 否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
http://img2doc.apistore.huaweicloud.com/v1/convert_post
Header中的Content-Type必须是multipart/form-data。
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
必须签名才能调用成功,签名见华为签名规则:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"result": {"token": "YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code": 40001,
"msg": "ParmNotRight"
}
多图转换POST
将多张图片转换为一个文档,url传入多张图片的地址,传入非图片格式无效。
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string数组 | 要转换的图片URL数组,支持http(s),ftp开头 | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| clean | int | 是否清除图像背景只显示文字,默认0否,1是 | 否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
http://img2doc.apistore.huaweicloud.com/v1/convert
传入的Body为JSON格式,如下:
{
"url": ["http://xxx/xxx1.png", "http://xxx/xxx2.png"],
"type": "docx",
"clean": 0
}
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
多图转换不支持JSON结构输出。
必须签名才能调用成功,签名见华为签名规则:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
支持几乎所有图片格式。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"result": {"token": "YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code": 40001,
"msg": "ParmNotRight"
}
输出JSON结构
当type取值为json时,接口返回单张图片的结构化识别结果。
样例:
{
"texts": [
{
"content": "发票号码:12345678",
"bbox": [100, 150, 300, 180]
},
{
"content": "金额:¥888.00",
"bbox": [200, 250, 350, 280]
}
],
"bars": [
{
"content": "123456789012",
"bbox": [400, 100, 560, 180],
"type": "EAN13",
"image": "base64字符串"
}
],
"pictures": [
{
"bbox": [50, 400, 200, 600],
"image": "base64字符串"
}
],
"tables": [
{
"bbox": [100, 700, 700, 1200]
}
],
"lines": [
{
"bbox": [80, 200, 400, 210]
},
{
"bbox": [80, 850, 700, 860]
}
]
}
说明
- JSON里的坐标左上方为原点(0,0),
bbox代表矩形左上和右下坐标。 content字段是OCR后的文字内容,texts是OCR后的文字区域。bars支持条码和二维码,type返回值包括QRCODE、EAN13、EAN8、UPCA、UPCE、CODE39、CODE93、CODE128、ITF、CODABAR、PDF417、DATA MATRIX、AZTEC。pictures是图片区域,image字段是base64字符串。tables是表格区域。lines是横线,bbox是两点坐标。- 输出JSON仅支持单图。
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code": 10000,
"msg": "",
"token": "YOUR_CREDENTIAL",
"result": {
"progress": 0.02,
"status": "Doing"
}
}
{
"code": 10000,
"msg": "",
"token": "YOUR_CREDENTIAL",
"result": {
"status": "Done",
"fileurl": "https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code": 40000,
"msg": "No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json。
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
附录:华为签名方式
参考链接:
https://support.huaweicloud.com/usermanual-apig/apig-ug-0011.html
调用华为云市场API需要按照华为官方文档进行签名认证。
概述
3种转换方式
- 单一图片转为文档,图片是一个下载链接,用HTTP GET方式,见:单图转换GET
- 单一图片转为文档,图片POST到服务器,用HTTP POST方式,见:单图转换POST
- 多个图片转为文档,图片是多个下载链接,用HTTP POST方式,见:多图转换POST
基本用法
由于转换需要时间,文件越大页数越多,转换越久,故系统采用异步的方式获得转换结果。调用转换接口后会获得token,随后有2种方式查询转换结果:
API调用需要签名,详细见文档附录:腾讯签名规则
由于腾讯云网关迁移的关系,故新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1域名和签名。新用户使用v2域名和签名。注意:v1和v2调用api的域名不一样。
单图转换GET
将一张图片下载链接url转换为其他格式,type是目标文档的类型,比如要转为docx,type就是docx
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string | 文件url,必须http(s),ftp开头,需要URL Encoding | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文: 1:英语 2:简体中文 3:繁体中文 4:法语 5:德语 6:意大利语 7:俄语 8:日文 9:韩文 10:西班牙语 11:葡萄牙语 12:丹麦语 13:荷兰语 14:芬兰语 15:挪威语 16:瑞典语 17:土耳其语 |
否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,需要URL Encoding,详细见回调URL | 否 |
请求示例:
v2域名:
https://ap-shanghai.cloudmarket-apigw.com/service-0ckf792d/v1/convert?url=https%3a%2f%2fxxx%2fxxx.jpg&type=docx
v1域名:
https://service-0ckf792d-1256652084.sh.apigw.tencentcs.com/release/v1/convert?url=https%3a%2f%2fxxx%2fxxx.jpg&type=docx
将所在url地址的jpg文件转为docx,type就是需转换为的文件类型,这个例子里就是docx
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
必须签名才能调用成功,签名见腾讯签名规则:
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
单图转换POST
直接将单个图片POST到服务器,大小限制10M
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| file | file | 要转换的文档,Content-Type使用multipart/form-data,最大10M | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,默认1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
v2域名:
https://ap-shanghai.cloudmarket-apigw.com/service-0ckf792d/v1/convert_post
v1域名:
https://service-0ckf792d-1256652084.sh.apigw.tencentcs.com/release/v1/convert_post
Header中的Content-Type必须是multipart/form-data
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
| JSON结构(单图) | json(结构定义) |
必须签名才能调用成功,签名见腾讯签名规则:
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
多图转换POST
将多张图片转换为一个文档,url传入多张图片的地址,传入非图片格式无效
Header中的Content-Type传入application/json
POST Body传入JSON,格式如下:
请求参数BODY:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| url | string数组 | 要转换的图片URL数组,支持http(s),ftp开头 | 是 |
| type | string | 小写,需转换为的文件类型,例如docx | 是 |
| language | int | OCR识别语言选项,默认2简体中文,值同GET方法 | 否 |
| clean | int | 是否清除图像背景只显示文字: 默认0:智能保留背景,尽量让背景不影响文字编辑 1是,完全清除背景 2否,完全保留背景 |
否 |
| table | int | 是否识别表格: 0(默认):自动,转为 PPTX 时关闭,其他格式开启 1 或 2:开启 3:关闭 |
否 |
| a4 | int | 是否输出A4大小文件,默认0否,1是。仅在pagesize为0时生效 | 否 |
| pagesize | int | 设定页面大小。默认0:维持原图比例。1:A3,2:A4,3:A5,4:B4,5:B5,6:Letter,7:Legal,8:Tabloid,9:Ledger 当不为0时,a4参数失效 |
否 |
| split2p | int | 横向图片若有左右两部分(常见于试卷),分割为2页。默认0:否,1是 | 否 |
| norotate | int | 是否自动根据文字方向旋转图片,1: 不旋转,0: 自动判断,如果确定图片中的文字方向则传1,速度更快 | 否 |
| outfilename | string | 生成的文件的文件名,默认随机 | 否 |
| callbackurl | string | 回调URL,转换结束后,会回调该URL,详细见回调URL | 否 |
请求示例:
v2域名:
https://ap-shanghai.cloudmarket-apigw.com/service-0ckf792d/v1/convert
v1域名:
https://service-0ckf792d-1256652084.sh.apigw.tencentcs.com/release/v1/convert
传入的Body为JSON格式,如下:
{ "url": [ "http://xxx/xxx1.png","http://xxx/xxx2.png" ], "type": "docx", "clean": 0, "a4": 0 }
支持转换为以下文件格式:
| 类型 | 扩展名(type取值) |
|---|---|
| 微软Office文档 | doc, docx, pptx, xlsx |
| 开放版式文档 | ofd |
| 文本文件 | txt, rtf |
| Markdown文件 | md |
多图转换不支持JSON结构输出。
必须签名才能调用成功,签名见腾讯签名规则:
支持几乎所有图片格式
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| token | string | 是 | 用于query接口 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"result":{"token":"YOUR_CREDENTIAL"}
}
返回示例(失败状态):
{
"code":40001,
"msg":"ParmNotRight"
}
输出JSON结构
当type取值为json时,接口返回单张图片的结构化识别结果。
样例:
{
"texts": [
{
"content": "发票号码:12345678",
"bbox": [100, 150, 300, 180]
},
{
"content": "金额:¥888.00",
"bbox": [200, 250, 350, 280]
}
],
"bars": [
{
"content": "123456789012",
"bbox": [400, 100, 560, 180],
"type": "EAN13",
"image": "base64字符串"
}
],
"pictures": [
{
"bbox": [50, 400, 200, 600],
"image": "base64字符串"
}
],
"tables": [
{
"bbox": [100, 700, 700, 1200]
}
],
"lines": [
{
"bbox": [80, 200, 400, 210]
},
{
"bbox": [80, 850, 700, 860]
}
]
}
说明
- JSON里的坐标左上方为原点(0,0),
bbox代表矩形左上和右下坐标。 content字段是OCR后的文字内容,texts是OCR后的文字区域。bars支持条码和二维码,type返回值包括QRCODE、EAN13、EAN8、UPCA、UPCE、CODE39、CODE93、CODE128、ITF、CODABAR、PDF417、DATA MATRIX、AZTEC。pictures是图片区域,image字段是base64字符串。tables是表格区域。lines是横线,bbox是两点坐标。- 输出JSON仅支持单图。
查询 QUERY
请求参数:
| 参数 | 类型及范围 | 备注 | 是否必须发送 |
|---|---|---|---|
| token | string | 是 |
请求示例:
https://api.duhuitech.com/q?token=YOUR_TOKEN
无需签名,无调用次数限制
由于转换需要时间,文件越大页数越多,转换越久,故需要轮询查询接口来获得结果。查询频率可以是1s一次,也可以更长一些。查询后先看status,如果是Done或Failed,则转换结束,停止轮询。如果是Doing或Pending,则继续轮询。
返回数据结构:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| code | number | 是 | 10000:请求成功 | |
| msg | string | 是 | ||
| token | string | 是 | 请求的token | |
| result | Dictionary | 否 | 成功后返回 |
result:
| 名称 | 含义 | 类型及范围 | 是否必须返回 | 备注 |
|---|---|---|---|---|
| status | 状态 | string | 是 | Pending:还未开始 Doing:正在转换 Done:转换成功 Failed:转换失败 |
| progress | 进度 | number(0.00 - 1.00) | 否(status为Doing时返回) | 比如0.88表示88% |
| fileurl | 文件地址 | string | 否(status为Done时返回) | 转换出来的文件地址,http和https都支持 |
| reason | 失败原因 | string | 否(status为Failed时可能返回) | 转换失败的原因 |
返回示例(成功状态):
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"progress":0.02,
"status":"Doing"
}
}
{
"code":10000,
"msg":"",
"token":"YOUR_CREDENTIAL",
"result":
{
"status":"Done",
"fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"
}
}
返回示例(失败状态):
{
"code":40000,
"msg":"No such token"
}
注意:
- 上传文件大小不能超过1500M。
- 最大转换时长:1小时,超过时间未完成则自动失败。
- 转换完成后,下载链接有效时间:1小时。
回调URL:
用途:客户可以自行部署服务器,系统转换结束后会调用客户提供的回调URL,直接发送转换结果,从而无需再轮询Query。
当设置了回调URL,转换结束后(无论成功失败),系统都会尝试调用该URL,具体如下:
以POST方式调用该URL,Header头中Content-Type: application/json
Body为JSON格式,内容和Query的结果相同,例如:
{"code":10000,"msg":"","token":"YOUR_CREDENTIAL","result":{"status":"Done","fileurl":"https://file.duhuitech.com/o/xxx/xxx.docx"}}
服务端收到该POST后需在10秒内返回HTTP STATUS CODE 200,视为调用成功,否则系统认为回调失败,会再次尝试。规则如下:
系统共计最多会调用3次回调URL,如果第一次失败,则等待3秒后尝试第二次,如果第二次失败,则等待5秒后尝试第三次,如果第三次失败,则不再尝试。
回调URL超时时间10秒。
关于下载转换后的文件需支持302跳转
接口返回的下载地址(如 fileurl / fileurls)会经 HTTP 302 跳转到实际文件。浏览器会自动跟随。
以下方式默认会跟随跳转,一般无需额外配置:
wget、Python requests / urllib、Node.js axios / got / fetch、Java OkHttp / HttpURLConnection、Go net/http、C# HttpClient、PHP file_get_contents、Objective-C / Swift NSURLSession / URLSession(含 Alamofire)
少数默认不跟随,需手动打开:
curl:加-L,如curl -L -o out.bin "下载地址"- Java
java.net.http.HttpClient:设置.followRedirects(HttpClient.Redirect.NORMAL) - PHP
curl扩展:设置CURLOPT_FOLLOWLOCATION => true
若只拿到 302 响应、本地没有文件内容,多半是未跟随跳转,按上面说明打开对应选项即可。
错误码表:
| JSON里返回的code | 错误信息 |
|---|---|
| 40000 | 通用错误 |
| 40001 | 参数错误 |
| 40002 | 参数不符合规范 |
附录:腾讯签名方式
腾讯云市场接口分V1和V2
新老用户拿到的 SecretID 不同,老用户SecretID以AKID开头的,请使用V1对应签名。新用户使用V2对应签名。新购用户都是V2签名。
V2签名:
https://cloud.tencent.com/document/product/306/57449
建议使用腾讯提供的各种语言的SDK,例如Java:
https://cloud.tencent.com/document/product/306/57449#Java
V1签名:
参考链接:
https://cloud.tencent.com/document/product/628/11782
建议使用腾讯提供的各种语言的SDK,例如Java:
