Label Studio 发票 OCR 预标注实战指南:搭一条 BIO NER 数据流水线 📅 发布时间:2026/9/13 7:52:15 👁 浏览次数: Label Studio 发票 OCR 预标注实战指南搭一条 BIO NER 数据流水线【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio在 Label Studio 中社区贡献模板OCR Invoices Pre-NER BIO Format让你对发票图片做 OCR 预标注校对每个词条用一个矩形框表示人工逐框核对转写文本所有 token 初始统一打 BIO 约定里的O标签最终为后续 NER 训练产出一条干净的 token 序列。模板源码就放在本仓库的 config.yml 里。为什么先整文本、后打实体完整的数据管线分两个阶段这个模板只负责前半段OCR 阶段识别模型Tesseract、EasyOCR 等从发票图片吐出一组带坐标的文本 token即票面上的每个词条/字段Pre-NER 阶段本模板每个 token 以图片上的矩形框呈现标注者只做两件事——确认框位置、修正框内 OCR 转写文本且所有 token 一律标OOutside实体外NER 阶段把校对好的 token 序列按阅读顺序排好后再逐 token 打 B-xxx / I-xxx生成 BIO 训练语料。「Pre-NER」的命名含义就在这一步它不产出任何 B-/I- 实体标签只保证 token 边界与文本内容可靠是 ner-tagging-invoices-bio-format 真正做 BIO 打标之前的数据清洗环节。把完整标注配置贴进项目下面这段配置取自仓库模板文件粘贴到 Labeling Setup 的 Custom template 编辑器里保存即可开始使用View !-- 展示发票图片从任务的 $image 字段取值允许缩放查看小字 -- Image nameimage value$image zoomControltrue/ !-- 矩形框控件接收 OCR 模型的预检测框每个框只允许选一个标签 -- RectangleLabels namelabel toNameimage choicesingle !-- 只发通用的 O 标签实体外想直接打实体类型就自己加 Label -- Label valueO background#FFA500/ /RectangleLabels !-- 转写输入框跟每个矩形一一绑定允许修改单行且必填 -- TextArea nametranscription toNameimage perRegiontrue editabletrue rows1 requiredtrue placeholderType or correct OCR text…/ /View保存后进入标注页你会看到主区是一张可缩放的发票图片在图上画一个矩形输入框立刻与它绑定框内 OCR 文本可以直接改。任务侧的数据结构简单到只有一张图的地址{ data: { image: https://你的媒体服务/invoices/receipt-001.png } }value$image支持 HTTP 链接、本地文件路径或 base64 三种取值方式导入后每个任务都能直接开标。perRegion、choice、required 这几个关键参数在管什么三个控件分工明确逐个看Image是展示入口。zoomControltrue打开缩放控制——发票字号小校对时基本离不开。还有个容易忽略的实现细节矩形坐标按图片原始尺寸的百分比0–100存储不是像素值。不同分辨率的发票导出来坐标语义一致需要时用original_width、original_height换算回像素即可。RectangleLabels负责给每个 token 打O模板实际用到的参数如下参数取值作用namelabel结果 JSON 里的from_nametoNameimage绑定到图片控件choicesingle一个矩形只能带一个标签LabelO橙色 #FFA500BIO 约定中的实体外标记opacity、strokeWidth、canRotate 等视觉参数均未显式设置走默认值。choicesingle意味着一次一框一 token若想让一个框同时挂多个标签改成multiple即可。TextArea是逐框转写的核心参数取值作用nametranscription结果 JSON 里的from_nametoNameimage绑定到图片控件perRegiontrue每个矩形对应一个输入框而非整图一个editabletrueOCR 预填的文本仍可修改rows1单行布局可直接按 Enter 提交requiredtrue没填转写的框无法提交防漏标placeholderType or correct OCR text…输入提示文案⚡perRegiontrue是整个模板的精髓选中不同矩形时输入框内容随区域切换天然形成「一个框一段文本」的校对节奏。rows1还有个交互红利——单行框按 Enter 就能提交不用点 Addrows 大于 1 时则要点 Add 或按 ShiftEnter校对速度差是实打实的。maxSubmissions、skipDuplicates 也没设置按需再补。另外给 TextArea 加displayModeregion-list可把所有区域输入框收拢到 Regions 面板做批量检查模板作者选择默认 tag 模式输入框紧贴图片操作更直接。三步跑通标注工作流建项目新建项目后在 Labeling Setup 选 Custom template粘贴上面的配置导数据用 JSON/CSV 上传每条记录带image键或挂 S3/GCS/Azure Blob/本地目录存储开始校对在图上框选一个 token发票号、金额、日期……矩形自动标O在绑定输入框里核对并修正 OCR 文本按 Enter 提交再框下一个全部完成后 Submit 整条标注。✅ 如果你的 OCR 模型已产出预检测框from_namelabel的 rectanglelabels 结果它们会以现成矩形出现在图片上标注者只需逐个校对省去手工框选。导出的 JSON 怎么读点 Export 后每个矩形在result数组里对应两条同 id 的配对记录{ id: a1b2, result: [ { id: region-1, type: rectanglelabels, from_name: label, to_name: image, original_width: 1920, original_height: 1280, value: { x: 3.1, y: 8.2, width: 20, height: 16, rectanglelabels: [O] } }, { id: region-1, type: textarea, from_name: transcription, to_name: image, value: { text: [Invoice No. 1024] } } ] }第一条管「在哪」x/y 是左上角的百分比坐标width/height 是框的宽高original_width/original_height 记录原图像素尺寸供换算第二条管「写的什么」框内校对后的文本。按 region id 聚合后就得到一份「坐标 文本 标签(O)」的 token 列表——这正是 BIO 序列标注的标准输入形态坐标还能顺带给「文本 版面」多模态抽取模型用。从单一 O 标签扩展到细粒度实体配置注释里留了扩展点RectangleLabels下随时可以追加更多 Label在 Pre-NER 阶段直接产出带实体类型的 tokenRectangleLabels namelabel toNameimage choicesingle Label valueO background#FFA500/ Label valueB-Vendor background#4CAF50/ Label valueB-InvoiceNo background#2196F3/ Label valueB-Amount background#F44336/ Label valueB-Date background#9C27B0/ /RectangleLabels这样改完导出数据直接携带实体类型省掉一次中间转换。保持默认的单一O标签也完全可行下一阶段切到 ner-tagging-invoices-bio-format 模板它内置 B-NIF、B-FORN、B-DATA、B-VALOR、B-NUMFAT 五组 B-/I- 标签加 O对$ocr字段的文本做词粒度打标。两个模板一前一后前者管框选校对、后者管实体打标从发票图片到 BIO 训练语料的完整准备闭环就通了。【免费下载链接】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),仅供参考