ContextGem

ContextGem:轻松从文档中提取 LLM

测试 覆盖范围 文档 文档 执照 PyPI Python 版本 代码安全 代码样式:黑色 进口:isort Pydantic v2 诗 预先提交 贡献者契约 深度维基

 

ContextGem 是一个免费的开源 LLM 框架,它可以让您以最少的代码更轻松地从文档中提取结构化数据和见解。

💎 为什么选择 ContextGem?

大多数流行的 LLM 框架用于从文档中提取结构化数据,即使是提取基本信息,也需要大量的样板代码。这大大增加了开发时间和复杂性。

ContextGem 通过提供灵活直观的框架来应对这一挑战,该框架能够以最小的投入从文档中提取结构化数据和洞察。复杂且耗时的部分由强大的抽象功能处理,从而消除了样板代码并降低了开发成本。

⭐ 主要特点

内置抽象 ContextGem 其他 LLM 框架*
自动动态提示 🟢
自动化数据建模和验证器 🟢
精确的粒度参考映射(段落和句子) 🟢
理由(提取背后的推理) 🟢
神经分割(SaT) 🟢
多语言支持(无提示输入/输出) 🟢
单一、统一的提取管道(声明式、可重用、完全可序列化) 🟢 🟡
分组法学硕士课程,包含特定角色的任务 🟢 🟡
嵌套上下文提取 🟢 🟡
统一的、完全可序列化的结果存储模型(文档) 🟢 🟡
提取任务校准示例 🟢 🟡
内置并发 I/O 处理 🟢 🟡
自动使用和成本跟踪 🟢 🟡
回退和重试逻辑 🟢 🟢
多家 LLM 提供商 🟢 🟢

🟢 - 完全支持 - 无需额外设置
🟡 - 部分支持 - 需要额外设置
◯ - 不支持 - 需要自定义逻辑

* 查看ContextGem 抽象的描述以及使用 ContextGem 和其他流行的开源 LLM 框架的具体实现示例的比较。

💡 使用最少的代码,您可以:

  • 从文档(文本、图像)中提取结构化数据
  • 识别并分析文档中的关键方面(主题、主题、类别)
  • 从文档中提取特定概念(实体、事实、结论、评估)
  • 通过简单、直观的 API构建复杂的提取工作流程
  • 创建多级提取管道(包含概念的方面、分层方面)

 

ContextGem 提取示例

📦安装

pip install -U contextgem
 

🚀 快速入门

# Quick Start Example - Extracting anomalies from a document, with source references and justifications

import os

from contextgem import Document, DocumentLLM, StringConcept

# Sample document text (shortened for brevity)
doc = Document(
    raw_text=(
        "Consultancy Agreement\n"
        "This agreement between Company A (Supplier) and Company B (Customer)...\n"
        "The term of the agreement is 1 year from the Effective Date...\n"
        "The Supplier shall provide consultancy services as described in Annex 2...\n"
        "The Customer shall pay the Supplier within 30 calendar days of receiving an invoice...\n"
        "The purple elephant danced gracefully on the moon while eating ice cream.\n"  # 💎 anomaly
        "This agreement is governed by the laws of Norway...\n"
    ),
)

# Attach a document-level concept
doc.concepts = [
    StringConcept(
        name="Anomalies",  # in longer contexts, this concept is hard to capture with RAG
        description="Anomalies in the document",
        add_references=True,
        reference_depth="sentences",
        add_justifications=True,
        justification_depth="brief",
        # see the docs for more configuration options
    )
    # add more concepts to the document, if needed
    # see the docs for available concepts: StringConcept, JsonObjectConcept, etc.
]
# Or use `doc.add_concepts([...])`

# Define an LLM for extracting information from the document
llm = DocumentLLM(
    model="openai/gpt-4o-mini",  # or another provider/LLM
    api_key=os.environ.get(
        "CONTEXTGEM_OPENAI_API_KEY"
    ),  # your API key for the LLM provider
    # see the docs for more configuration options
)

# Extract information from the document
doc = llm.extract_all(doc)  # or use async version `await llm.extract_all_async(doc)`

# Access extracted information in the document object
print(
    doc.concepts[0].extracted_items
)  # extracted items with references & justifications
# or `doc.get_concept_by_name("Anomalies").extracted_items`
 

在 Colab 中打开


请参阅文档中的更多示例:

基本使用示例

高级用法示例

🔄 文档转换器

要创建用于 LLM 分析的 ContextGem 文档,您可以直接传递原始文本,也可以使用处理各种文件格式的内置转换器。

📄 DOCX 转换器

ContextGem 提供内置转换器,可轻松将 DOCX 文件转换为 LLM 就绪数据。

  • 提取其他开源工具通常无法捕获的信息:未对齐的表格、注释、脚注、文本框、页眉/页脚和嵌入图像
  • 保留具有丰富元数据的文档结构,以改进 LLM 分析
# Using ContextGem's DocxConverter

from contextgem import DocxConverter

converter = DocxConverter()

# Convert a DOCX file to an LLM-ready ContextGem Document
# from path
document = converter.convert("path/to/document.docx")
# or from file object
with open("path/to/document.docx", "rb") as docx_file_object:
    document = converter.convert(docx_file_object)

# You can also use it as a standalone text extractor
docx_text = converter.convert_to_text_format(
    "path/to/document.docx",
    output_format="markdown",  # or "raw"
)
 

在文档中了解有关DOCX 转换器功能的更多信息。

🎯 重点文档分析

ContextGem 利用 LLM 的长上下文窗口,从单个文档中提取出卓越的准确率。与 RAG 方法(通常难以处理复杂概念和细微洞察)不同,ContextGem 充分利用了持续扩展的上下文容量、不断改进的 LLM 功能以及降低的成本。这种专注的方法能够直接从完整文档中提取信息,消除检索不一致,同时针对深入的单文档分析进行优化。虽然这可以提高单个文档的准确率,但 ContextGem 目前不支持跨文档查询或全语料库检索——对于这些用例,现代 RAG 系统(例如 LlamaIndex、Haystack)仍然更为合适。

🤖 支持

ContextGem 通过LiteLLM集成支持基于云和本地的 LLM :

  • 云端法学硕士:OpenAI、Anthropic、Google、Azure OpenAI 等
  • 本地 LLM:使用 Ollama、LM Studio 等提供商在本地运行模型。
  • 模型架构:适用于推理/CoT 功能(例如 o4-mini)和非推理模型(例如 gpt-4.1)
  • 简单的 API:所有 LLM 的统一接口,可轻松切换提供商

在文档中了解有关支持的 LLM 提供程序和模型以及如何配置 LLM 的更多信息。

⚡ 优化

ContextGem 文档提供了有关优化策略的指导,以最大限度地提高性能、最大限度地降低成本并提高提取准确性:

💾 序列化结果

ContextGem 允许您使用内置序列化方法保存和加载 Document 对象、管道和 LLM 配置:

  • 保存已处理的文档以避免重复昂贵的 LLM 调用
  • 在系统之间传输提取结果
  • 保留管道和 LLM 配置以供以后重用

在文档中了解有关序列化选项的更多信息。

📚 文档

完整文档可在contextgem.dev上找到。

完整文档的原始文本版本可在 处获取docs/docs-raw-for-llm.txt。此文件自动生成,包含所有文档,其格式已针对 LLM 导入进行了优化(例如,用于问答)。

相关推荐

RAG-Anything

RAG-Anything

<p>RAG-Anything是香港大学数据智能实验室推出的开源多模态RAG系统。系统支持处理包含文本、图像、表格和公式的复杂文档,提供从文档摄取到智能查询的端到端解决方案。系统基于多模态知识图谱、灵活的解析架构和混合检索机制,显著提升复杂文档处理能力,支持多种文档格式,如PDF、Office文档、图像和文本文件等。RAG-Anything核心优势包括端到端多模态流水线、多格式文档支持、多模态内容分析引擎、知识图谱索引、灵活的处理架构和跨模态检索机制等。</p> <h2 style="font-size: 20px;">RAG-Anything的项目地址</h2> <ul> <li>GitHub仓库:https://github.com/HKUDS/RAG-Anything</li> <li>arXiv技术论文:https://arxiv.org/pdf/2410.05779</li> </ul>

Agentic Document Extraction

Agentic Document Extraction

<div class="markdown-heading" dir="auto"> <h2 class="heading-element" dir="auto" tabindex="-1">概述</h2> <a id="user-content-overview" class="anchor" href="https://github.com/landing-ai/agentic-doc#overview" aria-label="永久链接:概述"></a></div> <p>LandingAI Agentic 文档提取API 从视觉复杂的文档(如表格、图片和图表)中提取结构化数据,并返回具有精确元素位置的分层 JSON。</p> <p>这个 Python 库包装了该 API 以提供:</p> <ul dir="auto"> <li>长文档支持——一次调用即可处理 100 多页 PDF</li> <li>自动重试/分页——处理并发、超时和速率限制</li> <li>辅助实用程序——边界框代码片段、可视化调试器等</li> </ul> <div class="markdown-heading" dir="auto"> <h3 class="heading-element" dir="auto" tabindex="-1">特征</h3> <a id="user-content-features" class="anchor" href="https://github.com/landing-ai/agentic-doc#features" aria-label="永久链接:功能"></a></div> <ul dir="auto"> <li>📦包含电池的安装: <code>pip install agentic-doc</code> – 无需其他任何操作 → 请参阅 <a href="https://github.com/landing-ai/agentic-doc#installation">安装</a></li> <li>🗂️所有文件类型:解析任意长度的 PDF、单个图像或 URL → 请参阅 <a href="https://github.com/landing-ai/agentic-doc#supported-files">支持的文件</a></li> <li>📚长文档就绪:自动拆分和并行处理 1000 多页 PDF,然后拼接结果 → 参见 <a href="https://github.com/landing-ai/agentic-doc#parse-large-pdf-files">解析大型 PDF 文件</a></li> <li>🧩结构化输出:返回分层 JSON 以及可渲染的 Markdown → 参见 <a href="https://github.com/landing-ai/agentic-doc#result-schema">结果架构</a></li> <li>👁️真实视觉效果:可选的边界框片段和整页可视化 → 请参阅 <a href="https://github.com/landing-ai/agentic-doc#save-groundings-as-images">将 Groundings 另存为图像</a></li> <li>🏃批处理和并行:提供列表;库管理线程和速率限制(<code>BATCH_SIZE</code>,<code>MAX_WORKERS</code>)→参见 <a href="https://github.com/landing-ai/agentic-doc#parse-multiple-files-in-a-batch">批量解析多个文件</a></li> <li>🔄弹性:针对 408/429/502/503/504 和速率限制命中的指数退避重试 → 请参阅 <a href="https://github.com/landing-ai/agentic-doc#automatically-handle-api-errors-and-rate-limits-with-retries">使用重试自动处理 API 错误和速率限制</a></li> <li>🛠️嵌入式助手: <code>parse_documents</code>,,<code>parse_and_save_documents</code>→<code>parse_and_save_document</code>参见 <a href="https://github.com/landing-ai/agentic-doc#main-functions">主要功能</a></li> <li>⚙️通过 env / .env 配置:调整并行度、日志记录样式、重试上限 — 无需更改代码 → 请参阅 <a href="https://github.com/landing-ai/agentic-doc#configuration-options">配置选项</a></li> <li>🌐原始 API 就绪:高级用户仍然可以直接访问 REST 端点 → 请参阅 <a href="https://support.landing.ai/docs/document-extraction" rel="nofollow">API 文档</a></li> </ul> <div class="markdown-heading" dir="auto"> <h2 class="heading-element" dir="auto" tabindex="-1">快速入门</h2> <a id="user-content-quick-start" class="anchor" href="https://github.com/landing-ai/agentic-doc#quick-start" aria-label="永久链接:快速入门"></a></div> <div class="markdown-heading" dir="auto"> <h3 class="heading-element" dir="auto" tabindex="-1">安装</h3> <a id="user-content-installation" class="anchor" href="https://github.com/landing-ai/agentic-doc#installation" aria-label="永久链接:安装"></a></div> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto"> <pre>pip install agentic-doc</pre> </div>

Dolphin

Dolphin

<p>Dolphin 是字节跳动开源的轻量级、高效的文档解析大模型。基于先解析结构后解析内容的两阶段方法,第一阶段生成文档布局元素序列,第二阶段用元素作为锚点并行解析内容。Dolphin在多种文档解析任务上表现出色,性能超越GPT-4.1、Mistral-OCR等模型。Dolphin 具有322M参数,体积小、速度快,支持多种文档元素解析,包括文本、表格、公式等。Dolphin的代码和预训练模型已公开,方便开发者使用和研究。</p> <h2 style="font-size: 20px;">Dolphin的主要功能</h2> <ul> <li>布局分析:识别文档中的各种元素(如标题、图表、表格、脚注等),按照自然阅读顺序生成元素序列。</li> <li>内容提取:将整个文档页面解析为结构化的JSON格式或Markdown格式,便于后续处理和展示。</li> <li>文本段落解析:准确识别和提取文档中的文本内容,支持多语言(如中文和英文)。</li> <li>公式识别:支持复杂公式的识别,包括行内公式和块级公式,输出LaTeX格式。</li> <li>表格解析:支持解析复杂的表格结构,提取单元格内容并生成HTML格式的表格。</li> <li>轻量级架构:模型参数量为322M,体积小,运行速度快,适合在资源受限的环境中使用。</li> <li>支持多种输入格式:支持处理多种类型的文档图像,包括学术论文、商业报告、技术文档等。</li> <li>多样化的输出格式:支持将解析结果输出为JSON、Markdown、HTML等多种格式,便于与不同系统集成。</li> </ul> <h2 style="font-size: 20px;">Dolphin的技术原理</h2> <ul> <li>页面级布局分析:用Swin Transformer对输入的文档图像进行编码,提取视觉特征。基于解码器生成文档元素序列,每个元素包含其类别(如标题、表格、图表等)和坐标位置。这一阶段的目标是按照自然阅读顺序生成结构化的布局信息。</li> <li>元素级内容解析:根据第一阶段生成的布局信息,从原始图像中裁剪出每个元素的局部视图。用特定的提示词(prompts),对每个元素进行并行内容解析。例如,表格用专门的提示词解析HTML格式,公式和文本段落共享提示词解析LaTeX格式。解码器根据裁剪后的元素图像和提示词,生成最终的解析内容。</li> </ul> <h2 style="font-size: 20px;">Dolphin的项目地址</h2> <ul> <li>GitHub仓库:<a class="external" href="https://github.com/bytedance/Dolphin" target="_blank" rel="noopener">https://github.com/bytedance/Dolphin</a></li> <li>HuggingFace模型库:<a class="external" href="https://huggingface.co/ByteDance/Dolphin" target="_blank" rel="noopener nofollow">https://huggingface.co/ByteDance/Dolphin</a></li> <li>arXiv技术论文:<a class="external" href="https://arxiv.org/pdf/2505.14059" target="_blank" rel="noopener nofollow">https://arxiv.org/pdf/2505.14059</a></li> <li>在线体验Demo:<a class="external" href="http://115.190.42.15:8888/dolphin/" target="_blank" rel="noopener nofollow">http://115.190.42.15:8888/dolphin/</a></li> </ul>

Pemo

Pemo

<p>Pemo是AI驱动的文档管理工具。工具支持PDF、Epub、Word等多种格式文档的导入与管理,具备一键翻译、智能总结、思维导图生成等功能,帮助用户快速理解复杂文献,提升阅读效率。Pemo提供沉浸式阅读体验,用户自定义阅读模式、进行标注和笔记,方便记录灵感。Pemo支持文档格式转换,满足不同需求,是学生、科研人员和职场人士提升学习与工作效率的好帮手。</p> <p><img src="https://img.medsci.cn/aisite/img//vfRbHQKce6JgZFjoSVaeTxzkVmdAzNhHm1tu4Fno.png"></p> <h2 style="font-size: 20px;">Pemo的主要功能</h2> <ul> <li>导入与分类:支持PDF、Epub、Word等格式文档的导入,进行分类管理,方便查找。</li> <li>格式转换:将不同格式的文档相互转换,如PDF转Word、Epub转PDF等,满足多样化的阅读和编辑需求。</li> <li>AI翻译:实时翻译外文文档,帮助用户无障碍阅读多语言内容。</li> <li>语音朗读:将书籍和文献转换为语音,用户能随时随地收听。</li> <li>智能总结:AI自动生成文献摘要,帮助用户快速掌握核心内容,节省时间。</li> <li>思维导图:将复杂文献转化为直观的思维导图,助力理解和记忆。</li> <li>智能笔记:阅读时轻松做笔记,AI自动关联相关内容,提高学习效率。</li> <li>文档注释:为电子书和PDF文档添加高亮、笔记和书签,增强阅读体验。</li> </ul> <h2 style="font-size: 20px;">Pemo的官网地址</h2> <ul> <li>官网地址:<a href="https://pemo.ai/" target="_blank" rel="noopener">pemo.ai</a></li> </ul>

暴躁的教授读论文(mad-professor)

暴躁的教授读论文(mad-professor)

"暴躁教授读论文"是一个学术论文阅读伴侣应用程序,旨在通过富有个性的AI助手提高论文阅读效率。它集成了PDF处理、AI翻译、RAG检索、AI问答和语音交互等多种功能,为学术研究者提供一站式的论文阅读解决方案。 主要特性 论文自动处理:导入PDF后自动提取、翻译和结构化论文内容 双语显示:支持中英文对照阅读论文 AI智能问答:与论文内容结合,提供专业的解释和分析 个性化AI教授:AI以"暴躁教授"的个性回答问题,增加趣味性 语音交互:支持语音提问和TTS语音回答 RAG增强检索:基于论文内容的精准检索和定位 分屏界面:左侧论文内容,右侧AI问答,高效交互 技术架构 前端界面:PyQt6构建的现代化桌面应用 核心引擎: AI问答模块:基于LLM的学术问答系统 RAG检索系统:向量检索增强的问答精准度 论文处理管线:PDF转MD、自动翻译、结构化解析 交互系统: 语音识别:实时语音输入识别 TTS语音合成:AI回答实时播报 情感识别:根据问题内容调整回答情绪 安装指南 环境要求 Python 3.10或更高版本 CUDA支持 6GB 以上显存

edrawmax.com

edrawmax.com

Online diagram maker for professional visuals