mrkeyoor.com_
Thu 17 Sept 23:18 UTC
AI Toolsevaluationupdated 26 Aug 2026

Hyper-Extract review

Hyper-Extract is a Python CLI and library that turns unstructured documents into typed collections, graphs, hypergraphs, and searchable knowledge stores with an LLM. It is aimed at developers who want reusable extraction templates and local artifacts instead of writing a separate prompt and parser for every document type.

+34stars / 7d
Verdict

Our Hyper-Extract run installed 118 packages and built successfully, but 4 of 318 pytest cases failed because langchain_anthropic could not be imported. Use it when the 80-plus templates and several graph shapes save more work than maintaining provider configuration and validating model output. Hold it behind your own checks for production extraction, especially on Anthropic, DeepSeek, or graph-family paths covered by current issues.

We ran it

Lab card: what happened when we ran Hyper-ExtractScreenshot of Hyper-Extract (yifanfeng97.github.io/Hyper-Extract)
Install✓ · 47s118 packages · 384 MB
Build✓ · 10s
Tests✗ · 23s314 passed · 4 failed · 11 skipped of 318 (pytest)
Known vulns0(pip-audit)
Repo471 files~24,237 lines of source · 5.7 MB · 5 CI workflows · tests dir

Answers from our run

Does Hyper-Extract build from source?

Dependencies installed in 47 seconds (118 packages), and the build succeeded in 10 seconds. We cloned commit ecba6c5 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Hyper-Extract's tests pass?

Not all of them: 314 of 318 passed and 4 failed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does Hyper-Extract have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use Hyper-Extract?

Teams expecting deterministic extraction without output checks: open issue #78 says one failed graph chunk can still abort graph-family parsing paths.

What are the alternatives to Hyper-Extract?

Unstructured, GraphRAG, LightRAG. Our Hyper-Extract run installed 118 packages and built successfully, but 4 of 318 pytest cases failed because langchain_anthropic could not be imported.

Setup3/547-second install, but the complete suite had 4 import failures
Docs4/5Broad user guides; contributor install commands need correction
Community4/53,376 stars and active August 2026 issue and pull request work
Maturity3/5v0.4.0 is alpha software with open extraction and provider defects

Who it’s for

Python developers turning repeated document formats into typed data or knowledge graphs.
Researchers and analysts who want editable YAML templates for domain extraction.
Teams that can supply an OpenAI-compatible LLM plus an embedding endpoint, or operate both through local vLLM.
MCP users who want read and export access to an existing Hyper-Extract knowledge abstract.

Who it’s NOT for

Teams expecting deterministic extraction without output checks: open issue #78 says one failed graph chunk can still abort graph-family parsing paths.
DeepSeek users relying only on DEEPSEEK_API_KEY: issue #76 reports that create_client(llm="deepseek") ignores it unless a key is passed another way, with a fix still open.
Contributors following the development install snippets literally: pull request #81 says the documented dev extra does not exist.
Anyone wanting a finished upload dashboard: the README centers on a CLI, Python API, local viewer, and MCP server, while the UI request in issue #34 was closed as not planned.

Setup reality

Our sandbox installed 118 Python packages in 47 seconds and used 384 MB. The build passed in 10 seconds. Pytest finished in 23 seconds with 314 passed, 4 failed, and 11 skipped; all 4 failures ended at imports for the missing langchain_anthropic module. Pip-audit found 0 known vulnerabilities.

Useful extraction still needs model access. OpenAI and Bailian can cover generation and embeddings; Anthropic and DeepSeek need a separate OpenAI-compatible embedder. Local use needs running vLLM endpoints, and the optional MCP server uses its own install extra.

The README requires Python 3.11 or newer and offers uv tool or pipx installation. There is no Dockerfile, so container packaging is yours. Provider behavior differs, and current issues document a DeepSeek environment-key mismatch plus graph extraction paths that can stop on one failed chunk.

Eight output shapes make this more than a graph builder

Hyper-Extract turns text into typed Python data rather than leaving every result as a loose model response. The README lists 8 structures, starting with lists and sets and extending through ordinary, temporal, spatial, and spatio-temporal graphs. Templates define fields, identifiers, display text, and merge behavior in YAML. That makes the project interesting when several documents share a schema and the extracted result must survive beyond one chat session.

The bundled library contains more than 80 templates across 6 domains, including finance, legal, medicine, industry, and general research. You can parse a file, add later material, search the stored abstract, open a local visualization, or export graph notes to Obsidian.

Provider support still means operating two model roles

Hyper-Extract relies on structured output from a language model, while semantic search needs an embedding model. OpenAI and Bailian can supply both roles. The README says Anthropic and DeepSeek supply the language-model side only, so either choice needs a separate OpenAI-compatible embedder. Local operation uses 2 vLLM endpoints in the example, one for Qwen generation and another for BGE embeddings.

That split affects credentials and failure handling. OpenAI, Anthropic, DeepSeek, and Bailian each use provider-specific keys. Issue #76 reports that the direct DeepSeek factory path ignores DEEPSEEK_API_KEY when no explicit key is passed, even though the configuration-manager path resolves it. Pull request #79 proposes a fix and was still open on August 25, 2026. Until it lands in the version you install, test the exact construction path your application will call.

Our 4 failures all stopped at the Anthropic import

commit ecba6c5 contained 471 files and roughly 24,237 source lines in a 5.7 MB checkout. Our fresh Debian sandbox installed 118 packages in 47 seconds, using 384 MB on disk. The build succeeded in 10 seconds. That is a reasonable trial cost for a Python extraction library, and the repository includes 5 CI workflow files plus a dedicated tests directory.

The complete pytest run exited with code 1 after 23 seconds. It reported 314 passed, 4 failed, and 11 skipped, with the 4 failures all in tests/utils/test_anthropic.py. Each log tail ended with ModuleNotFoundError: No module named 'langchain_anthropic'. The log establishes the missing import and nothing more, so we cannot say whether the packaging choice, test environment, or another change should own the fix.

What happened when we ran it

Our run completed installation in 47 seconds and the build in 10 seconds, then pytest finished with 314 passing and 4 failing cases out of 318. The 11 skipped cases were reported separately. Pip-audit found 0 known vulnerabilities in the installed dependency set, which is reassuring for this commit without proving that every optional provider extra has the same result.

The warnings also matter less than the failed imports, but they give maintainers a dated maintenance signal. Pytest printed a Pydantic notice about class-based configuration being deprecated for removal in version 3.0. It also warned that the mock field named schema shadows a parent attribute. Neither warning was reported as one of the 4 failures.

Our sandbox had 3 CPUs, 8 GB of RAM, no secrets, and no privileged access. We did not call paid model APIs, run a local GPU model, judge extraction accuracy, or measure search latency. The result tells you that the repository installs and builds in a clean Python 3.12 container, while its full default test command did not finish green under those conditions.

One bad graph chunk can still end a parse

The project has code for incremental updates and several merge strategies, but model output remains an unreliable input. Open issue #78 says the base extraction path isolates per-item provider failures, while graph, hypergraph, and spatio-temporal overrides do not apply the same protection. In those paths, one exception can abort parse() or feed_text() instead of returning the chunks that succeeded. That is a concrete production concern for long documents.

Template errors can also surface late. Issue #77 says current loading checks the Pydantic shape but does not catch missing identifier fields, invalid display placeholders, or temporal and spatial fields that point nowhere. The proposed he template validate command was still an open request on August 25. Teams writing their own templates should keep representative fixtures and assert the resulting nodes and edges, not merely accept a valid YAML file.

The MCP server is for existing abstracts, not ingestion

Installing the optional MCP extra adds he-mcp, a stdio server with 5 documented tools: list templates, inspect an abstract, search it, ask a retrieval question, and export to Obsidian. The README describes that interface as read and export only. It can let Claude Desktop or an IDE agent query work you already created without granting the agent a general document-processing command.

MCP version support deserves a check before rollout. The project pins the Python MCP package below version 2, and issue #72 requests MCP 2.0 support. An open dependency pull request proposes widening the range. If your client has already moved to the 2026 protocol line, test initialization and every tool response before assuming a dependency-range edit guarantees compatibility.

August activity is strong, while v0.4.0 remains alpha

GitHub showed 3,376 stars and 13 combined issues and pull requests when fetched. The last repository push was August 12, 2026, and several issue and pull request threads were updated on August 25. The latest release, v0.4.0, was published August 1 with native DeepSeek support. Those dates show current work even though the release classifier in pyproject.toml still says alpha.

The documentation covers CLI use, the Python API, providers, templates, MCP, and local vLLM. Contributor setup is less dependable: pull request #81 says multiple English and Chinese pages refer to a dev extra that does not exist, while the project defines development tools in a dependency group. Hyper-Extract is worth a controlled trial for repeated typed extraction. A production decision should wait on your own accuracy fixtures and the provider path you will deploy.

Alternatives

ProjectWhat it isPick it when
UnstructuredA document ingestion library focused on partitioning files into usable elements.pick this instead when parsing PDFs, Office files, and layout is the main job, before any graph extraction.
GraphRAGMicrosoft's pipeline for building graph-based indexes and answering questions over text.pick this instead when graph-backed retrieval is the fixed goal and you can accept a more prescriptive indexing pipeline.
LightRAG gh↗A graph-assisted retrieval system with several storage and model backends.pick this instead when retrieval and question answering matter more than reusable typed extraction templates.

Sources

  1. Hyper-Extract README
  2. Hyper-Extract v0.4.0 release
  3. Issue 76: DeepSeek API key handling
  4. Issue 78: graph chunk failure isolation
  5. Pull request 81: development install docs
  6. Hyper-Extract project metadata

More ai tools reviews

rowboat · skills · superpowers-zh · yolov5 · eve · MemOS · the whole board →