OCR Invoices Pre-NER BIO Format 标注模板完整指南:发票预标注数据准备一条龙
2026/9/13 4:53:02 网站建设 项目流程

OCR Invoices Pre-NER BIO Format 标注模板完整指南:发票预标注数据准备一条龙

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

发票信息抽取管线里,OCR 文本要先经人工校对,才能用于 NER 训练。Label Studio 社区标注模板「OCR Invoices Pre-NER BIO Format」把这套预标注数据准备变成可直接套用的流程:框选 token、校对转写,最后导出 BIO 就绪的 token 序列。

数据流:一张发票图到一条 BIO 语料

这一节解决"数据从哪来、到哪去"的问题:一张发票图要经过四个阶段,才变成 NER 训练能用的语料。

  1. 输入:每个任务的data字段只需一个image键,值是发票图片的 URL 或 base64。
  2. OCR 检测识别:OCR 模型输出带坐标的文本 token。token 即发票上的每个词条或字段,每个 token 对应一个 bounding box(矩形框)。有预检测时框已生成,没有就手动框选。
  3. 人工校对(Pre-NER 阶段):标注者逐个核对框内转写文本,可修改错字。所有 token 初始标签都是O(Outside,实体外部)。
  4. 导出:标注结果按区域 id 聚合成"坐标 + 文本 + 标签"的 token 列表。
  5. NER 训练输入:把该列表按阅读顺序排列,在其上标注 B-(实体开始)与 I-(实体内部)标签。BIO 约定即 B-、I-、O 三者组合。仓库中的 ner-tagging-invoices-bio-format 模板就是为第 5 步准备的。

这个模板的产出不是最终 NER 语料,而是一份全部标为 O 的 token 序列。

配置拆解:三个控件如何协同

这一节解决"配置怎么写"的问题:Image、RectangleLabels、TextArea 三个控件组合成一份完整可运行的配置。

<View> <!-- The image to annotate --> <Image name="image" value="$image" zoomControl="true"/> <!-- Bounding-box control that will receive the "rectanglelabels" results coming from your OCR model (from_name = "label") --> <RectangleLabels name="label" toName="image" choice="single"> <!-- You only emit the generic "O" class, but feel free to add more labels --> <Label value="O" background="#FFA500"/> </RectangleLabels> <!-- Per-region transcription box (from_name = "transcription"). Because perRegion="true", one TextArea is linked to each rectangle. --> <TextArea name="transcription" toName="image" perRegion="true" editable="true" rows="1" required="true" placeholder="Type or correct OCR text…"/> </View>

这段配置与仓库 config.yml 中的 config 段一致。注意两点:value="$image"从任务数据取图;每个矩形产出两条结果,from_name分别为labeltranscription。完整配置可直接复制使用。

Image:图片展示与缩放

<Image>负责展示发票图片。它决定了坐标的参照系:标注结果的坐标以图片原始尺寸的百分比(0–100)存储,而非像素值。

参数类型默认值本文取值说明
namestringimage控件名称,其他控件 toName 的绑定目标
valuestring$image从任务数据取图片 URL 或 base64
zoomControlbooleanfalsetrue显示缩放控件,支持放大观察

这么配的原因:发票小字号多,zoomControl="true"让你能放大看清字段,而百分比坐标让不同分辨率的票据可以共用一套配置。

RectangleLabels:框选 token 并打 O 标签

<RectangleLabels>创建带标签的矩形框,是 OCR 预检测结果的落点。本模板只定义了一个标签O,橙色填充便于肉眼识别。

参数类型默认值本文取值说明
namestringlabel控件名称,结果的 from_name
toNamestringimage绑定的 Image 控件
choicesingle | multiplesinglesingle每个矩形只能选一个标签
maxUsagesnumber未设置单标签每任务最大使用次数
opacityfloat0.6未设置矩形填充透明度
strokeWidthnumber1未设置边框粗细
canRotatebooleantrue未设置是否显示旋转控制

choice="single"保证一个框只属于一个类别,导出时无需处理多标签歧义。标签集本身很轻,注释也说明可以按需要扩充。

TextArea:逐框转写校对

<TextArea>提供转写输入。perRegion 表示按区域标注:与整图标注不同,它让每个矩形框绑定一个独立输入框。

参数类型默认值本文取值说明
namestringtranscription控件名称,结果的 from_name
toNamestringimage绑定的 Image 控件
perRegionbooleantrue按区域标注,每个矩形一个输入框
editablebooleanfalsetrue提交后仍可编辑文本
rowsnumber11输入框行数;单行可用 Enter 提交
requiredbooleanfalsetrue强制每个区域都有转写内容
placeholderstringType or correct OCR text…输入提示文案
maxSubmissionsstring未设置每区域最多提交次数
skipDuplicatesbooleanfalse未设置是否禁止重复提交
displayModetag | region-listtag未设置(默认 tag)tag 模式输入框在标注区,region-list 模式集中在 Regions 面板

perRegion="true" 是整个模板的关键。它让"一个矩形一段文本"成为硬绑定:选中哪个框,输入框就对应哪段 OCR 文本。rows="1"再配合 Enter 直接提交,校对节奏快,无需点击 Add 按钮。

上手四步 🚀:从建项目到导出

这一节解决"怎么跑起来"的问题:建项目、导数据、标注、导出,每步附一个常见卡点。

  1. 建项目贴配置:新建项目,在 Labeling Setup 选择 Custom template,粘贴上文完整配置并保存。卡点:toName必须与<Image>name完全一致,否则控件不绑定,框选不可用。

  2. 导入任务数据:在项目 Import Data 页上传 JSON 文件,或经 API 与 S3、GCS 等存储后端导入,参考 tasks.md 与 storage.md。数据形态只需一个image键:

    { "data": { "image": "https://your-domain.com/invoices/1024.png" } }

    这里的 URL 换成你自己的可访问地址即可,base64 数据同样支持。卡点:image用了相对路径时浏览器无法解析,必须换成完整 URL。

  3. 标注操作序列:框选一个 token → 在输入框核对并修正转写文本 → 按 Enter 提交 → 继续下一个框。有 OCR 预检测时,只需核对框位与文本。卡点:required="true"意味着存在未填转写的框时,Submit 会被拦截,无法提交整条任务。

  4. 导出:在 Export 页选择 JSON 格式下载,流程见 export.md。卡点:导出的 x、y、width、height 是 0–100 的百分比,需乘以original_widthoriginal_height才能还原像素坐标。

导出结果怎么读 📦

这一节解决"导出物怎么用"的问题:同一条标注里的 rectanglelabels 与 textarea 记录靠相同 id 配对。

每个矩形区域产出两条记录,片段如下(字段取自仓库文档示例,实际字段以仓库实际为准):

{ "result": [ { "id": "X_12fGk", "type": "rectanglelabels", "from_name": "label", "to_name": "image", "original_width": 1920, "original_height": 1280, "image_rotation": 0, "value": { "x": 3.1, "y": 8.2, "width": 20, "height": 16, "rectanglelabels": ["O"], "rotation": 0 } }, { "id": "X_12fGk", "type": "textarea", "from_name": "transcription", "to_name": "image", "value": { "text": ["Invoice No. 1024"] } } ] }

逐字段看:

  • rectanglelabels 记录:from_namelabel,对应 RectangleLabels 控件。value.xvalue.y是旋转前左上角坐标,widthheight是宽高,均为百分比。original_widthoriginal_height记录原图像素尺寸,image_rotation记录图片旋转角度。rectanglelabels数组即该框的标签,本模板固定为["O"]
  • textarea 记录:from_nametranscriptionvalue.text是数组,对应该区域提交的全部转写文本;单行提交时通常只有一个元素。
  • 两条记录的id相同(示例中的X_12fGk),说明它们来自同一个矩形区域。按 id 聚合后,每个 token 就同时拥有坐标、文本与标签。

变成 NER 训练输入的方法:按阅读顺序(先 y 后 x 排序)取出各 token 的text,组成 token 序列,初始标签全为 O。后续在该序列上打 B-/I- 标签,即得 BIO 训练语料。仓库的 ner-tagging-invoices-bio-format 模板以granularity="word"的 Text 控件承接这一步,界面如下。

进阶:从单一 O 标签到细粒度实体

这一节解决"能否提前标实体类型"的问题:发票字段类型已知时,标签集直接扩展即可,无需两遍标注。

可直接替换原 RectangleLabels 片段的扩展配置:

<RectangleLabels name="label" toName="image" choice="single"> <Label value="O" background="#FFA500"/> <Label value="B-Vendor" background="#4CAF50"/> <Label value="B-InvoiceNo" background="#2196F3"/> <Label value="B-Amount" background="#F44336"/> <Label value="B-Date" background="#9C27B0"/> </RectangleLabels>

choice="single"保持不变,每个框仍只选一个标签。标注者在框选时直接选实体类型,Pre-NER 阶段即产出带类型的 token,省去后续转换。

扩展标签应保留 BIO 前缀约定(B-xxx、I-xxx、O),下游解析代码才能统一处理。适用场景:字段类型稳定(供应商、发票号、金额、日期)且希望一遍完成。若你倾向"先框选校对、后分类"的两步流程,保持默认 O 标签,把实体分类留给 NER 模板即可。

总结与资源索引

本节收口要点并集中给出资源。OCR Invoices Pre-NER BIO Format 只做一件事:Image 展示发票,RectangleLabels 以 O 标签框选 token,TextArea perRegion 完成逐框转写校对。导出的"坐标 + 文本 + O"token 序列,正是 NER 训练的标准输入。预标注数据准备,照此流程即可复用。

资源相对路径
模板配置 config.ymlconfig.yml
后续 NER 标注模板ner-tagging-invoices-bio-format/config.yml
Image 标签文档image.md
RectangleLabels 标签文档rectanglelabels.md
TextArea 标签文档textarea.md
View 标签文档view.md
任务数据导入指南tasks.md
导出指南export.md
模板界面截图ocr-invoices-pre-ner-bio-format.jpg

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询