优化证照识别接口

This commit is contained in:
BBIT-Kai
2025-10-30 10:39:25 +08:00
parent 1999daf014
commit 5f5eefd37b
2 changed files with 43 additions and 24 deletions
+39 -24
View File
@@ -56,30 +56,45 @@ def idcard(state: State):
state["content"] = analyze_card(
state,
"""
你是一个 OCR 信息提取专家,请从图片中识别出身份证的全部可见信息,并输出严格的 JSON 格式。
要求:
1. 无论是正面还是反面,都要识别所有字段。
2. 如果某个字段无法辨认,请将值设为 null
3. 只输出 JSON,不要输出任何解释或多余内容
4. 严格保持 JSON 格式,键名统一为英文
5. "side" 字段为身份证方向,填写:人像面 或 国徽面
JSON 示例格式
{
"side": "国徽面",
"name": "持证人姓名",
"gender": "性别",
"ethnicity": "民族",
"id_number": "身份证号",
"birth_date": "出生日期",
"address": "住址",
"issuing_authority": "签发机关",
"valid_period_start": "有效期开始日期",
"valid_period_end": "有效期结束日期",
"notes": "其他可见文字或备注"
}
请确保输出的 JSON 可以被严格解析。
你是一个 OCR 信息提取专家,请从图片中识别出身份证的全部可见信息,并输出严格的 JSON 格式。
要求:
1. 无论是正面还是反面,都要识别所有字段
2. 如果某个字段无法辨认,请将值设为 null
3. 只输出 JSON,不要输出任何解释或多余内容
4. 严格保持 JSON 格式,键名统一为英文
5. "side" 字段为身份证方向,填写:"人像面""国徽面"
6. 对于身份证正面(含地址)的情况,请在提取 "address" 的基础上,将地址进一步拆分为以下字段
- "xian": 县、区、市级行政单位,如“宜州区”、“石泉县”
- "xiang": 乡、镇、街道,如“怀远镇”、“城关镇”
- "cun": 村或社区名称,如“李家寨村”、“明星村”
- "zu": 屯或组信息,如“拉瓦屯”、“十五组”。
若地址中同时出现“组”和“号”,仅保留“组”部分,不要包含“号”;例如:
“十五组31号” → "zu": "十五组"
“拉瓦屯62号” → "zu": "拉瓦屯"
门牌号(如“31号”、“62号”)不需要单独提取,保留在原始 "address" 字段中。
若某部分在地址中无法明确识别,请将该字段值设为 null。
JSON 示例格式:
{
"side": "国徽面",
"name": "持证人姓名",
"gender": "性别",
"ethnicity": "民族",
"id_number": "身份证号",
"birth_date": "出生日期",
"address": "住址",
"xian": "县或区",
"xiang": "乡或镇",
"cun": "村或社区",
"zu": "组或门牌号",
"issuing_authority": "签发机关",
"valid_period_start": "有效期开始日期",
"valid_period_end": "有效期结束日期",
"notes": "其他可见文字或备注"
}
请确保输出的 JSON 可以被严格解析。
""",
)
return state
@@ -67,6 +67,10 @@ const keyMap: Record<string, string> = {
card_type: '卡种',
result: '识别结果',
issuer_country: '发卡国家',
xian: '县',
xiang: '乡',
cun: '村',
zu: '组',
};
// 递归替换函数