快速开始
在控制台创建 API 密钥,再把它作为 Bearer 令牌调用接口。
- 请求方式
POST- 内容类型
multipart/form-data
鉴权
请求必须携带 API 密钥。密钥只在创建成功时显示一次,请妥善保存,不要提交到代码仓库或打包进客户端。
Authorization: Bearer 404wl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
创建 API 密钥
PaddleOCR API
POST
https://api.404wl.com/v1/ocr
上传一张图片,返回图片中的完整文本和每个文字区域的位置,每张图片消耗 1 页额度。
请求参数
| 字段 | 类型 | 说明 |
|---|---|---|
file |
file |
必填。支持 JPEG、PNG、WEBP、BMP、TIFF,单文件最大 10 MiB。 |
调用示例
cURL
curl --request POST 'https://api.404wl.com/v1/ocr' \
--header 'Authorization: Bearer 404wl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--form 'file=@./example.png'
JavaScript
const form = new FormData();
form.append('file', file);
const response = await fetch('https://api.404wl.com/v1/ocr', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
},
body: form,
});
const result = await response.json();
PHP
$handle = curl_init('https://api.404wl.com/v1/ocr');
curl_setopt_array($handle, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer 404wl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
],
CURLOPT_POSTFIELDS => [
'file' => new CURLFile(__DIR__.'/example.png'),
],
CURLOPT_RETURNTRANSFER => true,
]);
$result = curl_exec($handle);
curl_close($handle);
响应格式
成功响应的 items 会列出每个识别到的文字区域,box 是原图尺寸上的四点坐标。
{
"success": true,
"request_id": "provider-request-id",
"data": {
"text": "你好",
"items": [
{
"text": "你好",
"score": 0.99,
"box": [[1, 2], [30, 2], [30, 20], [1, 20]]
}
],
"image": {
"width": 1280,
"height": 720
}
},
"error": null
}
成功和失败响应都会返回 request_id;响应头中的 X-Request-ID 可用于联系支持时定位请求。
错误码
错误响应统一返回 success: false、request_id、data: null 和 error。
| HTTP | code | 说明 |
|---|---|---|
401 |
UNAUTHENTICATED |
API 密钥缺失或无效。 |
402 |
SUBSCRIPTION_REQUIRED |
当前没有可用额度包。 |
402 |
QUOTA_EXHAUSTED |
当前可用额度已用完。 |
415 |
UNSUPPORTED_IMAGE |
文件不是受支持的图片格式。 |
422 |
INVALID_REQUEST |
缺少文件或请求参数无效。 |
429 |
RATE_LIMITED |
请求超过限流频率。 |
502 |
PROVIDER_ERRORINVALID_PROVIDER_RESPONSE |
OCR 服务内部错误,请稍后重试。 |
503 |
PROVIDER_UNAVAILABLE |
OCR 服务暂时不可用,请稍后重试。 |
PDF 转图片 API
POST
https://api.404wl.com/v1/pdf2img
上传一个 PDF,按页返回渲染后的图片,按实际转换的页数消耗额度。
请求参数
| 字段 | 类型 | 说明 |
|---|---|---|
file |
file |
必填。PDF 文件,最大 10 MiB。 |
format |
string |
输出格式:png(默认)、jpeg 或 webp。 |
dpi |
integer |
渲染分辨率,1–300,默认 150。 |
quality |
integer |
1–100,默认 90,仅 jpeg 和 webp 生效。 |
pages |
string |
要转换的页,形如 1-3,5,8-10,页码从 1 开始,重复页会去重。不传则转换整个文档。 |
调用示例
cURL
curl --request POST 'https://api.404wl.com/v1/pdf2img' \
--header 'Authorization: Bearer 404wl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
--form 'file=@./example.pdf' \
--form 'format=jpeg' \
--form 'pages=1-3'
JavaScript
const form = new FormData();
form.append('file', file);
form.append('format', 'jpeg');
form.append('pages', '1-3');
const response = await fetch('https://api.404wl.com/v1/pdf2img', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
},
body: form,
});
const result = await response.json();
响应格式
page_count 是文档总页数,converted_pages 是本次实际转换的页数,两者都返回以便核对用量。page 是文件内的原始页码,每页图片以 base64 内嵌。
{
"success": true,
"request_id": "provider-request-id",
"data": {
"page_count": 12,
"converted_pages": 3,
"format": "jpeg",
"dpi": 150,
"pages": [
{
"page": 1,
"width": 1240,
"height": 1755,
"image_base64": "..."
}
]
},
"error": null
}
错误码
错误响应统一返回 success: false、request_id、data: null 和 error。
| HTTP | code | 说明 |
|---|---|---|
400 |
EMPTY_FILE |
上传的文件为空。 |
401 |
UNAUTHENTICATED |
API 密钥缺失或无效。 |
402 |
SUBSCRIPTION_REQUIRED |
当前没有可用额度包。 |
402 |
QUOTA_EXHAUSTED |
当前可用额度已用完。 |
402 |
PAGE_SELECTION_REQUIRED |
可用额度不足以按整份文档预扣,请用 pages 指定本次要转换的页。 |
413 |
FILE_TOO_LARGE |
PDF 超过上传大小限制。 |
413 |
TOO_MANY_PAGES |
选中的页数超过单次上限。 |
413 |
OUTPUT_TOO_LARGE |
输出的图片总量超过单次上限,可降低 dpi 或减少页数。 |
413 |
PAGE_TOO_LARGE |
单页渲染后的尺寸超过上限,可降低 dpi。 |
415 |
UNSUPPORTED_FILE |
不是可读取的 PDF。 |
422 |
INVALID_REQUEST |
缺少文件或请求参数无效。 |
422 |
PAGE_OUT_OF_RANGE |
pages 超出文档页数。 |
422 |
PASSWORD_REQUIRED |
PDF 已加密,需要先解除密码保护。 |
422 |
UNSUPPORTED_ENCRYPTION |
PDF 使用了不支持的加密方式。 |
429 |
RATE_LIMITED |
请求超过限流频率。 |
502 |
PROVIDER_ERRORINVALID_PROVIDER_RESPONSE |
PDF 服务内部错误,请稍后重试。 |
503 |
PROVIDER_UNAVAILABLE |
PDF 服务暂时不可用,请稍后重试。 |
额度与限流
- OCR 每成功识别一张图片消耗 1 页额度;PDF 转图片按实际转换的页数消耗。
- 识别或渲染失败、被限流、服务异常都不扣除额度。
- 你账户下的所有 API 密钥共享同一份额度,两个产品也共用这份额度。
- OCR 默认每分钟最多 60 次请求,PDF 转图片默认 10 次,超出后返回
429。 - 需要更多额度时,可在控制台购买额度包。