
GLiNER2结构化数据抽取教程如何把非结构化文本一步变成JSON【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2GLiNER2GitHub 加速计划 / gl / GLiNER2是一个统一的Schema 驱动信息抽取开源项目只需一个字段描述Schema就能把发票、病历、新闻等非结构化文本一步抽成结构化的 JSON无需大模型提示词也无需微调且支持纯本地 CPU 推理、隐私零外泄。本文将带你从零完成安装、定义字段、抽取 JSON并覆盖多任务组合抽取与长文档处理的最佳实践。为什么选 Schema 驱动的结构化数据抽取 传统做法要么写一堆正则要么调用大模型生成 JSON——前者维护成本高后者贵、慢且可能幻觉。GLiNER2 走的是第三条路一个 Schema多种任务实体、分类、结构化记录、关系、跨度属性一次前向推理全部完成本地优先CPU 可跑数据不出本机天然适合 PII、医疗、金融等敏感场景两种架构统一 APIspan 架构GLiNER2与 boundary 架构GLiNER2.5都由AutoExtractor自动识别加载对新手来说最常用、最贴合文本变 JSON需求的 API 就是extract_json()输入一段文本 一个字段字典输出就是标准 JSON 结构。快速安装与模型加载要求 Python ≥ 3.10见 pyproject.toml。只装本地推理所需的最小依赖pip install gliner2[local]加载模型只需一行AutoExtractor会按检查点自动分派架构源码见 auto.pyfrom gliner2 import AutoExtractor model AutoExtractor.from_pretrained(fastino/gliner2.5-base-v1) # 英文首选 # 多语言场景换用 fastino/gliner2.5-multi-v1追求 CPU 速度用 fastino/gliner2.5-small-v1 中文等无空格分词语言可传word_splitterchar加载详见 README.md。三步完成结构化数据抽取定义字段 → 调用 → 拿到 JSON以一段产品描述为例调用extract_json()即可得到 JSON 结果text The MacBook Pro costs $1999 and features M3 chip, 16GB RAM, and 512GB storage. result model.extract_json( text, { product: [ name::str::Full product name and model, price::str::Product price with currency, features::list::Included hardware features ] } ) print(result) # {product: [{name: MacBook Pro, price: [$1999], # features: [M3 chip, 16GB RAM, 512GB storage]}]}整个过程只有三步① 写字段描述 → ② 调extract_json→ ③ 打印 JSON。没有提示词工程没有解析修复字段名就是你 JSON 里的键名。字段规格写法速查表字段用::分隔的简单语法描述tutorial/3-json_extraction.md 有完整讲解写法含义name最简写法默认list类型可抽出多个值name::str单值字段返回字符串features::list::Hardware features多值字段 给模型的描述tier::[basic\|premium\|enterprise]::str枚举字段只能取候选值之一杜绝自由发挥两个实用技巧给字段加英文描述模型理解更准例如amount::str::Transaction amount with currency用枚举约束取值如订单状态status::[pending|processing|shipped|delivered]::str输出的 JSON 天然干净进阶多任务组合抽取一次调用出实体分类结构真实业务里往往既要 JSON 字段又要实体和分类。用 Schema 构建器create_schema()把多种任务拼在一起一次推理全部完成schema (model.create_schema() .entities([company, person]) # 实体 .classification(sentiment, [positive, negative, neutral]) # 分类 .structure(product) # 结构化字段 .field(name, dtypestr) .field(price, dtypestr) .field(features, dtypelist) ) text Apple CEO Tim Cook announced iPhone 15 for $999 with amazing new features. Exciting! print(model.extract(text, schema))一次调用即可得到{ entities: {person: [Tim Cook], company: [Apple]}, sentiment: positive, product: [{name: iPhone 15, price: $999, features: [amazing new features]}] }更多组合套路发票、合同、临床笔记等真实场景的完整 Schema见 tutorial/4-combined.md。质量把控置信度、字符位置与正则校验include_confidenceTrue每个字段附带 0–1 置信度可按阈值过滤低质结果include_spansTrue附带start/end字符位置可回溯原文高亮阈值调优extract_json(..., threshold0.9)提高精度敏感字段建议单独设高阈值正则校验器用RegexValidator过滤不像邮箱的邮箱详见 tutorial/5-validator.md长文档怎么办分块扫描 自动合并年报、病历这类超长文本直接用extract_json_long()runtime.py模型自动按重叠分块扫描把块内结果映射回原文位置并合并去重你拿到的 span 仍是全文档全局偏移。result model.extract_json_long(long_text, {transaction: [...]}, chunk_size384, chunk_overlap64)批量场景用batch_extract_json/batch_extract_json_long。完整长文本指南见 tutorial/12-long_context.md。上手后的下一步 想做的事去哪儿看JSON 抽取完整教程财务、医疗、电商案例tutorial/3-json_extraction.md实体抽取 / 分类 / 关系抽取tutorial/2-ner.md、tutorial/1-classification.md用自己的数据微调LoRAtutorial/9-training.mdGLiNER2.5 边界架构设计说明gliner2/models/boundary/项目总览与全部模型列表README.md总结GLiNER2 把非结构化文本 → JSON这件繁琐的事压缩为写一个字段字典 一次函数调用本地运行、结果可控、字段枚举可约束。对于需要把文档批量变成结构化数据入库的场景它是目前上手最轻量的选择之一。【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考