新闻资讯-歌剧话剧

谷歌开源LangExtract,几行代码就把乱七八糟的文本变结构化数据

发布时间:2026-03-10 15:05:48  浏览量:2

日常工作中,我们总会遇到各种“乱七八糟”的文档:保险公司发来的邮件东一句西一句、房产中介的listing格式五花八门、医生手写的处方扫描件歪歪扭扭……想从中抠出关键信息,比如保单号、房价、用药剂量,往往得靠手动复制粘贴,或者写一堆规则去匹配,结果一换格式就全崩。

传统工具,比如基于模板的提取器或纯OCR,基本都卡在这个“布局依赖”上。一旦文档样式变了,或者内容混杂,它们就傻眼。2025年7月,谷歌悄然推出了一款开源Python库——

LangExtract

,直接用大模型(尤其是自家Gemini)来“读懂”文本含义,而不是死盯位置和格式。这东西一出,很多开发者直呼:终于等到靠谱的非结构化文本结构化方案了。

LangExtract的GitHub仓库(google/langextract)目前已有数千星标,文档详尽,社区活跃。它不只是个提取工具,还带“源 grounding”(来源追溯)功能:每个抽取出的字段都能精准指向原文的字符位置,让结果可审计、可验证。这在医疗、法律、金融等对准确性要求极高的场景特别有用。

为什么说它“非常适合从任何文本中提取文本”?因为它把难题从“怎么匹配”变成了“告诉我你想要什么结构”,剩下的交给LLM去理解上下文。安装只需pip install langextract,几行代码就能跑起来。

先说说老问题。

模板依赖症

市面很多工具(如Tabula、Camelot for PDF,BeautifulSoup for HTML)都假设文档有固定布局。保险公司的报价单A公司是表格,B公司是纯文本;医生的处方有的打印,有的潦草手写。一变格式,规则全废,得重新写。

OCR后处理噩梦

OCR能把图片转文本,但转出来的是“脏”数据:错字、换行乱、入错列。想再结构化,往往还得加一堆正则、关键词匹配,维护成本爆炸。

上下文丢失

纯规则系统不懂语义。比如邮件里“claim amount $5000 due to accident on 2025-12-01”,它可能分别抽到金额和日期,但不知道这是同一件事的claim。

规模化瓶颈

处理成千上万份文档时,人工校验或规则迭代根本跟不上。

这些痛点在AI时代之前是“无解”的。但大模型出现后,情况彻底变了:LLM天生擅长理解自然语言、推理关系、填补缺失信息。谷歌正是抓住这一点,推出了LangExtract。

LangExtract的设计哲学可以用四个词概括:

Schema-first、Instruction-driven、Grounded、Traceable

Schema-first

你先用Pydantic BaseModel定义想要的输出结构(schema),比如房产listing:

from pydantic import BaseModelclass RealEstateListing(BaseModel): price: str location: str area_sqft: int amenities: list[str] bedrooms: int

Instruction-driven

除了schema,你还能加自然语言prompt和few-shot examples,告诉模型“重点提取这些字段,如果信息缺失就填null”。

Grounded & Traceable

最杀手级的功能——每个提取项都会附带“来源区间”(character offsets),比如“price”来自原文第128-135字符。这样你能一眼看到数据是不是模型“脑补”的,还是真有出处。这对合规场景(如医疗记录、法律合同)至关重要,避免幻觉风险。

多模型支持

:默认Gemini系列(包括Gemini 2.5 Flash,低成本高速度),也支持Gemma本地跑、Ollama、甚至OpenAI/Claude等(通过provider插件)。

可视化工具

:内置交互式viewer,能在Jupyter里高亮显示每个字段对应的原文片段,像调试神器。

批处理&长文本

:支持批量API、长文档分片,处理整本书(如《罗密欧与朱丽叶》全文分析)也没问题。

安装超级简单:

pip install langextract

基本用法示例(来自官方):

import langextract as lxfrom pydantic import BaseModelclass Medication(BaseModel): drug_name: str dosage: str frequency: str duration: strtext = """Patient prescribed Amoxicillin 500mg capsules, take 1 every 8 hours for 7 days."""result = lx.extract( text_or_documents=text, schema=Medication, model="models/gemini-2.5-flash", prompt_description="Extract medication details from prescription text.")print(result)# 输出:Medication(drug_name='Amoxicillin', dosage='500mg capsules', frequency='every 8 hours', duration='7 days')

就这么几行,模型就懂了。

真实场景落地潜力

个人/小团队

:自动化发票、入库单、简历筛选、客户反馈整理。几分钟搭个Streamlit demo,就能每天省几小时手动录入。

企业级

:金融风控抽合同条款、医疗AI辅助从病历提取诊断码、客服系统从工单邮件提炼问题类型+严重度、电商从用户评论抽产品优缺点。

RAG增强

:结合知识图谱,把提取出的实体/关系直接喂给Graph-RAG,提升问答准确性。

本地化部署

:用Gemma 3或Llama系列本地跑,零成本、无隐私泄露,适合敏感数据场景。

当然,也不是完美无缺:

成本

:用Gemini Flash很便宜(每百万token几分钱),但处理超大批量时还是有费用。

速度

:比纯规则慢(秒级到分钟级,取决于文本长度和模型)。

幻觉风险

:虽有grounding降低,但复杂推理时仍需few-shot+验证。

多语言

:Gemini支持很好,中文、日韩也越来越稳(最新版加了Unicode tokenizer优化)。

但相比传统方案,这些缺点微不足道。

过去十年,我们把结构化数据玩得飞起,却一直被非结构化文本卡脖子。LangExtract的出现,相当于给这条“最后一公里”铺了高速:定义好schema,喂点例子,模型就帮你读懂、抽取、溯源。

谷歌这次没藏着掖着,直接开源Apache 2.0,社区可以随便fork、改provider、加功能。无论你是数据分析师想快速清洗数据集,还是后端工程师想给产品加个智能文档解析,LangExtract都值得一试。

几行代码,就能让乱七八糟的文本瞬间变身干净JSON——这感觉,真的很爽。

项目地址:https://github.com/google/langextract

官方博客:https://developers.googleblog.com/introducing-langextract-a-gemini-powered-information-extraction-library

有玩过的朋友,欢迎留言分享你的schema和提取案例,一起交流怎么调prompt更准!

标签: 谷歌 开源 代码 schema langextract
sitemap