结构化数据提取 API
/ocr.json 端点从图像或文档中提取指定字段。
该端点返回带类型的 JSON。使用 fields 查询参数选择响应中的值。
端点
POST https://api.ocrskill.com/ocr.json
每个请求都需要 Bearer 令牌。
Authorization: Bearer sk-your-key-here
使用此命令获取免费 API 密钥。
curl https://api.ocrskill.com/get-key.json
快速开始
将字段名添加到 fields,然后上传文件。
curl "https://api.ocrskill.com/ocr.json?fields=last_name,first_name,nationality,birthdate" \
-H "Authorization: Bearer sk-your-key-here" \
-F "file=@identity-card.pdf"
该端点返回以下 JSON。
{
"last_name": "MUSTERMANN",
"first_name": "ERIKA",
"nationality": "DEUTSCH",
"birthdate": "1964-08-12"
}
发送文件
该端点接受 multipart 上传、原始文件和 JSON 数据 URI。
文件大小上限为 20 MB。
Multipart 上传
通过 file、image、document 或 data 表单字段发送文件。
curl "https://api.ocrskill.com/ocr.json?fields=thumbnail_hook_text,video_title,video_channel" \
-H "Authorization: Bearer sk-your-key-here" \
-F "file=@thumbnail.jpg"
原始二进制上传
使用正确的 Content-Type 发送文件字节。
curl "https://api.ocrskill.com/ocr.json?fields=company_name,invoice_date" \
-H "Authorization: Bearer sk-your-key-here" \
-H "Content-Type: application/pdf" \
--data-binary "@invoice.pdf"
包含数据 URI 的 JSON 正文
发送一个 JSON 对象,并在 document_url 中提供数据 URI(与 Mistral API 类似且兼容)。
curl "https://api.ocrskill.com/ocr.json?fields=title,publish_date" \
-H "Authorization: Bearer sk-your-key-here" \
-H "Content-Type: application/json" \
-d '{
"document_url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
}'
支持的文件类型
该端点支持以下图像类型:
- PNG
- JPEG
- WebP
- GIF
- BMP
- TIFF
该端点还支持以下文档类型:
- Microsoft Word(
DOC和DOCX) - Microsoft Excel(
XLS和XLSX) - Microsoft PowerPoint(
PPT和PPTX) - OpenDocument 文本、电子表格和演示文稿文件(
ODT、ODS和ODP) - RTF
- CSV
选择字段
fields 参数包含以逗号分隔的字段名列表。
必填字段
没有后缀的字段名需要一个值。如果该端点找不到此值,则返回 400。
?fields=last_name,first_name,birthdate
可选字段
添加 ? 可将字段设为可选。如果该端点找不到可选字段,则响应中不包含该字段。
?fields=last_name,first_name,birthdate?,nationality?
使用发现模式
省略 fields 可使用发现模式。在此模式下,该端点将所有支持的字段视为可选字段。
响应仅包含该端点找到的字段。
curl "https://api.ocrskill.com/ocr.json" \
-H "Authorization: Bearer sk-your-key-here" \
-F "file=@report.docx"
处理错误
| 情况 | 状态码 | 说明 |
|---|---|---|
fields 中存在未知字段名 |
400 |
错误信息会指出不支持的字段。 |
| 字段名为空 | 400 |
删除空值和末尾逗号。 |
| 字段名重复 | 400 |
每个字段只列出一次。 |
| 缺少必填字段 | 400 |
错误信息包含提取详情和提取出的 input_text。 |
| Bearer 令牌缺失或无效 | 401 |
发送 Authorization: Bearer sk-...。 |
| 文件类型不受支持或未知 | 400 |
发送一种受支持的文件类型。 |
该端点将日期字段格式化为 YYYY-MM-DD。它会删除字符串值开头和结尾的空格。
该端点拒绝字面字符串 "null"。
支持的字段
一个请求可以选择以下字段名的任意组合。
人员
| 字段 | 类型 | 说明 |
|---|---|---|
last_name |
string | 姓氏。 |
first_name |
string | 名字。 |
birthdate |
date | 出生日期(YYYY-MM-DD)。 |
sex_gender |
string | 生理性别或社会性别。 |
地址
| 字段 | 类型 | 说明 |
|---|---|---|
street_name |
string | 邮政地址中的街道名称。 |
street_number |
string | 街道、建筑物或门牌号。 |
address_rest |
string | 街区、入口、楼层、公寓或邮政信箱。 |
town_or_city |
string | 城镇、城市、市镇或地区。 |
county |
string | 县、区或行政区划。 |
judet |
string | 罗马尼亚 judet 或同等的县级行政区划。 |
region |
string | 地区、省、州或更大的区域。 |
country |
string | 国家名称。 |
身份证
| 字段 | 类型 | 说明 |
|---|---|---|
nationality |
string | 国籍。 |
cnp |
string | 个人身份号码(Cod numeric personal)。 |
id_card_series_number |
string | 身份证系列号或号码。 |
expiration_date |
date | 身份证到期日期(YYYY-MM-DD)。 |
issue_date |
date | 身份证签发日期(YYYY-MM-DD)。 |
id_card_issuer |
string | 身份证签发机构名称。 |
id_card_birth_place |
string | 身份证上注明的出生地。 |
车辆登记
| 字段 | 类型 | 说明 |
|---|---|---|
certificate_id |
string | 登记证书号码或系列号。 |
license_plate |
string | A:车辆登记号码或车牌号。 |
first_registration_date |
date | B:首次登记日期(YYYY-MM-DD)。 |
holder_last_name |
string | C.1.1:持有人的姓氏。 |
holder_company |
string | C.1.1:持有人的公司名称。 |
holder_first_name |
string | C.1.2:持有人的名字。 |
holder_full_address |
string | C.1.3:持有人的完整地址或总部地址。 |
owner_last_name |
string | C.2.1:所有人的姓氏。 |
owner_company |
string | C.2.1:所有人的公司名称。 |
owner_first_name |
string | C.2.2:所有人的名字。 |
owner_full_address |
string | C.2.3:所有人的完整地址或总部地址。 |
vehicle_brand |
string | D.1:车辆制造商或品牌。 |
vehicle_model |
string | D.2:类型、变体、版本或型号。 |
vehicle_commercial_summary |
string | D.3:商业描述或型号摘要。 |
vehicle_identification_number |
string | E:VIN 或底盘号。 |
max_technical_weight |
string | F.1:技术许可最大载重质量。 |
vehicle_mass |
string | G:车辆使用状态下的质量。 |
registration_valid_until |
date | H:登记有效期结束日期(YYYY-MM-DD)。 |
registration_date |
date | I:登记日期(YYYY-MM-DD)。 |
certificate_issue_date |
date | I.1:证书签发日期(YYYY-MM-DD)。 |
vehicle_category |
string | J:车辆类别。 |
type_approval_number |
string | K:型式认证号码。 |
engine_capacity |
string | P.1:发动机气缸排量。 |
engine_power |
string | P.2:发动机最大净功率。 |
fuel_type |
string | P.3:燃料类型或动力来源。 |
power_to_weight_ratio |
string | Q:功率质量比(如有)。 |
vehicle_color |
string | R:车辆颜色。 |
seats |
string | S.1:座位数,包括驾驶员座位。 |
standing_places |
string | S.2:站立位置数(如有)。 |
vehicle_identification_series |
string | Y:车辆识别证书的系列号。 |
certificate_issuer |
string | Z:证书签发机构名称。 |
last_itp_date |
date | 最近一次定期技术检验日期(YYYY-MM-DD)。 |
公司、发票和收据
| 字段 | 类型 | 说明 |
|---|---|---|
company_name |
string | 公司、组织或法律实体名称。 |
buyer_name |
string | 买方名称。 |
seller_name |
string | 卖方名称。 |
total_amount |
number | 已开票或已支付的总金额。 |
invoice_date |
date | 发票开具日期。 |
receipt_date |
date | 收据开具日期。 |
书面作品
| 字段 | 类型 | 说明 |
|---|---|---|
title |
string | 文章标题。 |
sub_title |
string | 文章副标题。 |
article_abstract |
string | 文章摘要或概要部分。 |
article_body |
string | 文章正文内容。 |
publish_date |
date | 内容发布日期(YYYY-MM-DD)。 |
article_tags |
string | 内容标签,以逗号分隔。 |
tags |
string | 内容标签,以逗号分隔。 |
concise_summary |
string | 内容的简明摘要。如果原文没有摘要,则重新编写。 |
事件
| 字段 | 类型 | 说明 |
|---|---|---|
event_name |
string | 事件名称或标题。 |
event_venue |
string | 事件场地、地点或多个场地。 |
event_dates |
string | 文本形式的事件日期或时间段。 |
event_date |
date | 事件日期或不完整日期(YYYY-MM-DD)。 |
视频缩略图
| 字段 | 类型 | 说明 |
|---|---|---|
thumbnail_hook_text |
string | 视频或短片中原样显示的吸引语。 |
video_title |
string | 视频或短片标题。 |
video_channel |
string | 创作者频道名称。 |
video_length_str |
string | 视频或短片时长,与原文完全一致。 |
date_posted_str |
string | 发布日期,与原文完全一致。 |
提取为 Markdown,而不是结构化 JSON
如果需要 Markdown 而不是结构化字段,请使用 /ocr 端点。它接受相同的文件类型。
curl https://api.ocrskill.com/ocr \
-H "Authorization: Bearer sk-your-key-here" \
-F "file=@example.pdf"
常见问题
结构化数据是什么?
结构化数据使用指定字段和一致的类型。/ocr.json 端点返回应用程序可以直接读取的字符串、数字和日期。
这是 Google 结构化数据或 schema.org 标记吗?
不是。Google 结构化数据向搜索引擎描述网页。它在网页中使用 JSON-LD 或微数据。
OCRskill 从文件中提取带类型的 JSON。应用程序可以存储或处理此 JSON。
输出是否有 JSON schema?
有。OCRskill 根据请求的 fields 创建响应 schema。
日期字段使用 YYYY-MM-DD。本参考中的每个字段都映射到一个带类型的 JSON 属性。
可以将 PDF 转换为 JSON、将图像转换为 PDF 或将 PDF 转换为图像吗?
可以将 PDF 直接发送到 /ocr.json。无需将 PDF 页面转换为图像。
OCRskill 不会将图像转换为 PDF,也不会将 PDF 转换为图像。
如何从图像中提取文本(图像转文本)?
调用 /ocr 提取 Markdown。调用带 fields 的 /ocr.json 提取指定值。
可以将图像转换为提示词(图像转提示词)吗?
调用 /ocr 提取用于提示词的 Markdown。如果提示词只需特定值,请使用 /ocr.json。
提取为什么失败?
该端点无法完成提取时会返回 400。请阅读错误信息以了解原因。
常见原因包括缺少必填字段、字段未知、字段重复或文件类型不受支持。
错误信息还包含 input_text。使用此值检查结构化提取失败前 OCRskill 提取的文本。
可以将 OCRskill 与 Claude 一起使用吗?
可以。使用 OCRskill 提取 Markdown 或 JSON,然后将结果发送给 Claude。