e2m: Convert Documents and Media into Markdown

Summary
E2M is a Python library for parsing documents, web pages, and audio into Markdown through configurable parser and converter components. It is aimed at developers preparing varied source material for RAG, training data, or downstream text workflows.
At a glance
- Language
- Jupyter Notebook
- License
- Apache-2.0
- Stars
- 1.3k
- Forks
- 76
- Added to OSRepos
- December 24, 2025
- Last analyzed
- October 3, 2026
Use at your own risk
OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of code from these repositories is the user's own responsibility. Always review the repository, source code, dependencies, licenses, and security implications before running or installing anything. OSRepos is not responsible for issues, damages, or losses resulting from third-party repositories.
Overview
E2M is a Python library that extracts content from document files, web pages, and audio, then supports converting parsed text and images into Markdown. Its parser-and-converter design lets users choose engines for different formats rather than relying on one universal extraction method.
It is most relevant to developers building ingestion workflows for RAG or model training, or consolidating mixed source material into Markdown. The project also offers an API service and configuration-based integrated parsers and converters.
Key Features
- Parses PDF, DOC and DOCX, EPUB, HTML, PPT and PPTX, URLs, MP3, and M4A sources.
- Offers format-specific parser engines, including Marker, Unstructured, Pandoc, Jina, and Whisper options.
- Converts extracted text and images to Markdown using configurable text and image converters.
- Supports an integrated parser and converter configured through YAML.
- Provides a Python library interface and an API service.
- Targets content preparation for RAG and model training or fine-tuning.
Use Cases
- A RAG developer can normalize a collection of PDFs, office documents, and web pages into Markdown for ingestion.
- A data team can extract text from presentations and EPUBs when assembling training or fine-tuning material.
- An application developer can transcribe audio files and include the resulting text in a document-processing workflow.
- A team processing different source formats can select parser engines per format and keep configuration in a YAML file.
Project Facts
- Language: Jupyter Notebook
- License: Apache-2.0
- Stars: 1.3k
- Forks: 76
- Topics: doc2x, e2m, llm, markdown, pdf-to-markdown, text-cleaning
- Archived: No
Getting Started
Install from the repository with pip:
pip install git+https://github.com/wisupai/e2m.git --index-url https://pypi.org/simple
See the README for parser examples, configuration, and API setup.
Alternatives
- attachments: Attachments produces structured text and image artifacts and offers LLM workflow adapters, while e2m focuses on configurable parsing and conversion to Markdown.
- OmniParse: OmniParse is a self-hosted service covering video as well as documents, audio, and web pages; e2m is a Python library centered on Markdown conversion.
- pdf-craft: PDF Craft specializes in OCR for scanned books and documents, with EPUB and translation output, while e2m handles varied source types.
Considerations
- Parser capabilities and setup depend on the selected engine. Some engines may require separate tools, model downloads, or service credentials.
- Text and image conversion examples use model providers and API keys. Local Whisper is also offered for audio parsing.
- The README documents Python 3.10 and 3.11. Check engine-specific requirements before choosing a deployment setup.
- The repository metadata identifies the license as Apache-2.0, while the README states MIT. Verify the repository's license file before relying on licensing terms.
Found this useful?
Share it with someone who would like e2m.
Comparisons
Source repository
Open the original repository on GitHub.
20 counted GitHub visits
Related repositories
Similar repositories that may be relevant next.

omnigent: Orchestrate AI Coding Agents Across Harnesses
October 5, 2026
Omnigent provides a shared orchestration layer for AI coding agents, with policies, sandboxing, and team collaboration. It suits developers who want to combine agent runtimes and access sessions across devices without tying workflows to one harness.

agentevals: Evaluate AI Agents from OpenTelemetry Traces
October 4, 2026
agentevals scores AI agent behavior from existing OpenTelemetry traces, without rerunning agents or making extra model calls. It suits teams building instrumented agents that need local evaluation, golden-set checks, or CI quality gates.

web-design: Create Consistent Web Pages with a Claude Code Skill
October 3, 2026
web-design is a Claude Code skill that turns product briefs, reference URLs, or screenshots into an editable design specification before generating web code. It is suited to developers and designers who want a repeatable, spec-led workflow for building consistent pages.

oomwoo: Build a DIY Robot Vacuum
October 2, 2026
OOMWOO is a planned, hackable robot vacuum built around Raspberry Pi, ROS2 and 2D LiDAR. It is aimed at makers who want to build and customize a locally controlled vacuum, but its hardware and build instructions are still in development.