Google LangExtract Release Notes

本文详细整理了 Google LangExtract 的版本更新日志,这是一个基于 Google Gemini 模型的开源信息提取库,提供强大的文档解析和数据提取能力。

Google LangExtract Release Notes

Google LangExtract 是一个开源的信息提取库,基于 Google 的 Gemini 模型,提供强大的文档解析和数据提取能力。

项目信息

仓库信息

核心功能

Google LangExtract 基于 Google 的 Gemini 模型,提供以下核心功能:

  • 📄 文档解析:支持 PDF、HTML、TXT、Markdown 等多种文档格式
  • 🎯 信息提取:支持实体提取、关系提取、表格提取等
  • 🤖 模型支持:基于 Google Gemini 模型,支持多模态(文本、图像)
  • 🔌 API 设计:简洁易用的 Python API,快速集成
  • 📊 结构化输出:将非结构化数据转换为结构化格式(JSON、CSV 等)
  • 🚀 批量处理:支持批量文档处理,提高处理效率

版本迭代历史

v1.0.0 - 2026-01-15

新功能

  • 初始版本发布
  • 支持文档格式:PDF、HTML、TXT、Markdown
  • 基础信息提取:实体提取、关键词提取
  • Gemini Pro 集成:支持 Gemini Pro 模型
  • 结构化输出:JSON 格式输出
  • Python 3.8+ 支持:支持 Python 3.8 及以上版本

模型支持

  • 🤖 Gemini Pro:支持 Gemini Pro 模型的高级功能
  • 📊 Gemini Flash:支持 Gemini Flash 模型(快速响应)

文档格式支持

  • 📄 PDF: 完整的 PDF 文档解析支持
  • 🌐 HTML: HTML 文档解析和提取
  • 📝 TXT: 纯本文档处理
  • 📑 Markdown: Markdown 文档格式支持

API 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from langextract import LangExtract

# 初始化 LangExtract
extractor = LangExtract(model="gemini-pro", api_key="your_api_key")

# 解析 PDF 文档
with open("document.pdf", "rb") as f:
result = extractor.extract_pdf(f)
print(f"提取的内容: {result.text}")
print(f"提取的实体: {result.entities}")

# 解析 HTML 文档
with open("document.html", "r", encoding="utf-8") as f:
result = extractor.extract_html(f)
print(f"提取的内容: {result.text}")
print(f"提取的实体: {result.entities}")

生态支持

  • 🔌 API Key 管理:支持 Google Cloud API Key 管理
  • 📊 使用统计:记录 API 调用次数和使用量
  • 🐛 错误处理:完善的错误处理和重试机制
  • 📝 日志记录:详细的日志记录,方便调试和监控

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
from langextract import LangExtract

# 提取实体
extractor = LangExtract()

# 从文本中提取实体
text = "Google Inc. is headquartered in Mountain View, California."
entities = extractor.extract_entities(text)

print(f"提取的实体:")
for entity in entities:
print(f" - {entity['type']}: {entity['text']}")

v1.0.2 - 2026-01-20

新功能

  • 表格提取增强:改进表格识别和提取能力
  • 多模态支持:增强图像和文本混合内容的处理
  • 批量处理优化:优化批量文档处理的性能
  • 错误处理改进:改进错误消息和异常处理

性能优化

  • 🚀 批量处理优化:批量文档处理性能提升 30%
  • 💾 内存优化:减少大文档处理的内存占用
  • 📊 缓存机制:支持结果缓存,提高重复查询效率
  • ⏱️ 超时控制:支持请求超时控制

API 改进

1
2
3
4
5
6
7
8
9
10
11
12
from langextract import LangExtract

# 批量处理文档
extractor = LangExtract(model="gemini-pro", api_key="your_api_key")

# 批量处理多个文档
documents = ["doc1.pdf", "doc2.pdf", "doc3.pdf"]
results = extractor.extract_batch_documents(documents, max_workers=4)

print(f"批量处理完成:")
for i, result in enumerate(results):
print(f" 文档 {i+1}: {len(result.entities)} 个实体")

v1.0.3 - 2026-01-25

新功能

  • 自定义提取规则:支持自定义提取规则和模式
  • 关系提取:增强实体间关系的识别和提取
  • 多语言支持:支持多语言文档处理(英语、中文、法语、德语等)
  • 结构化数据输出:支持 CSV、XML 等多种输出格式

自定义提取规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from langextract import LangExtract

# 自定义提取规则
extractor = LangExtract()

# 定义自定义规则
custom_rules = {
"date_pattern": r'\d{4}-\d{2}-\d{2}',
"email_pattern": r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
}

# 应用自定义规则
text = "Meeting scheduled for 2026-01-25. Contact john.doe@example.com for details."
entities = extractor.extract_with_rules(text, custom_rules)

print(f"使用自定义规则提取的实体:")
for entity in entities:
print(f" - {entity['type']}: {entity['text']}")

关系提取

1
2
3
4
5
6
7
8
9
10
11
12
from langextract import LangExtract

# 提取实体间的关系
text = "Google was founded by Larry Page and Sergey Brin in 1998."
extractor = LangExtract()

# 提取关系
relations = extractor.extract_relations(text)

print(f"提取的关系:")
for relation in relations:
print(f" {relation['type']}: {relation['subject']} - {relation['object']}")

v1.1.0 - 2026-02-01

新功能

  • 插件系统:支持第三方插件和扩展
  • JSON Schema 支持:支持 JSON Schema 验证输出格式
  • CLI 工具:提供命令行工具,方便直接使用
  • API 扩展:支持自定义 API 扩展和适配器

插件系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from langextract import LangExtract, Plugin

# 初始化带插件的 LangExtract
extractor = LangExtract()

# 加载自定义插件
extractor.load_plugin("custom_entity_extractor")

# 使用插件提取
text = "Custom entities in the document."
entities = extractor.extract_with_plugin(text, "custom_entity_extractor")

print(f"使用插件提取的实体:")
for entity in entities:
print(f" - {entity['type']}: {entity['text']}")

CLI 工具

1
2
3
4
5
6
7
8
9
# 命令行工具使用
# 安装
pip install google-langextract

# 提取实体
langextract extract --input document.pdf --output results.json --model gemini-pro

# 批量处理
langextract batch --input documents/ --output results/ --model gemini-pro --workers 4

JSON Schema 验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from langextract import LangExtract

# 使用 JSON Schema 验证输出
extractor = LangExtract()

# 定义 JSON Schema
schema = {
"type": "object",
"properties": {
"entities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {"type": "string"},
"text": {"type": "string"},
"confidence": {"type": "number"}
}
}
}
}
}

# 提取并验证
text = "Sample document text."
result = extractor.extract(text, schema=schema)

print(f"提取并验证的结果:")
print(f" 有效: {result['valid']}")
print(f" 实体数: {len(result['entities'])}")

v1.2.0 - 2026-02-10

新功能

  • 多模型支持:支持 Gemini Pro、Gemini Flash、Gemini Ultra 等多种模型
  • 异步 API:支持异步 API 调用,提高处理效率
  • 高级批处理:支持智能批处理和并行处理
  • 监控和日志:增强的监控和日志记录功能

多模型支持

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import asyncio
from langextract import LangExtract

# 异步多模型处理
async def process_with_multiple_models():
extractor = LangExtract()

# 使用不同模型处理
models = ["gemini-pro", "gemini-flash", "gemini-ultra"]

tasks = []
for model in models:
task = extractor.extract_async(document, model=model)
tasks.append(task)

# 并行处理
results = await asyncio.gather(*tasks)

for model, result in zip(models, results):
print(f"{model}: 提取了 {len(result['entities'])} 个实体")

# 运行异步处理
asyncio.run(process_with_multiple_models())

高级批处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from langextract import LangExtract

# 高级批处理配置
extractor = LangExtract(model="gemini-pro")

# 智能批处理
documents = ["doc1.pdf", "doc2.pdf", "doc3.pdf", ..., "doc100.pdf"]

# 使用智能批处理(自动分组、并行处理)
results = extractor.extract_batch_smart(
documents,
max_workers=8, # 最大 8 个并行 worker
batch_size=10, # 每批 10 个文档
auto_group=True # 自动按文档类型分组
)

print(f"智能批处理完成:")
print(f" 处理文档数: {len(documents)}")
print(f" 总用时: {results['total_time']} 秒")
print(f" 平均速度: {results['avg_speed']} 文档/秒")

监控和日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from langextract import LangExtract, Logger

# 配置监控和日志
extractor = LangExtract(
model="gemini-pro",
logger=Logger(level="INFO", file="extraction.log"),
monitor_enabled=True
)

# 提取并记录监控数据
text = "Sample document text."
result = extractor.extract(text)

print(f"提取结果:")
print(f" 实体数: {len(result['entities'])}")
print(f" 处理时间: {result['processing_time']} 秒")
print(f" 模型使用: {result['model_usage']}")

# 访问监控数据
monitor = extractor.get_monitor()
print(f"\n监控数据:")
print(f" 总 API 调用: {monitor['total_api_calls']}")
print(f" 成功率: {monitor['success_rate']}")
print(f" 平均响应时间: {monitor['avg_response_time']} ms")

项目特性总结

核心优势

  • 🤖 基于 Gemini:使用 Google 最新的 Gemini 模型
  • 📄 多格式支持:支持 PDF、HTML、TXT、Markdown 等多种文档格式
  • 🎯 智能提取:支持实体提取、关系提取、表格提取等
  • 🚀 高性能:优化的批处理和异步 API 调用
  • 🔌 简单易用:简洁的 Python API 设计,快速集成
  • 📊 结构化输出:支持 JSON、CSV、XML 等多种输出格式
  • 🔧 高度可定制:支持自定义提取规则、插件系统、CLI 工具
  • 📈 完善的监控:详细的日志记录和监控功能
  • 🌍 多语言支持:支持英语、中文、法语、德语等多种语言

适用场景

  • 文档解析:PDF、HTML、TXT、Markdown 等文档的解析和信息提取
  • 🎯 实体提取:从文本中提取命名实体、组织、日期、地点等
  • 🔍 关系提取:识别实体间的关系(如隶属关系、合作关系等)
  • 📊 表格提取:从文档中提取结构化表格数据
  • 🚀 批量处理:大批量文档的批量解析和提取
  • 📝 多语言文档:支持多语言文档的处理和提取
  • 🔧 自定义提取:支持自定义提取规则和模式
  • 🤖 多模态处理:支持文本和图像混合内容的处理

生态系统

  • Google Gemini:基于 Google 的 Gemini 模型
  • Google Cloud:与 Google Cloud 平台集成
  • 开源社区:活跃的开源社区,丰富的插件和扩展

项目信息

最新版本: v1.2.0
发布日期: 2026-02-10