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.

