{"adoption": {"forks": 74, "observed_at": "2026-08-28T04:04:16.307307+00:00", "stars": 1294}, "canonical_url": "https://ross.abutalabs.com/products/e2m", "card": {"archived": false, "artifact_type": "library", "description": "E2M converts various file types (doc, docx, epub, html, htm, url, pdf, ppt, pptx, mp3, m4a) into Markdown. It’s easy to install, with dedicated parsers and converters, supporting custom configs. E2M offers an all-in-one, flexible, and open-source solution.", "domain": ["pdf", "files", "large-language-models", "developer-tools"], "enriched": true, "function": ["parser", "pdf", "ocr", "speech-recognition", "llm-inference", "rag"], "health_score": 20, "homepage": null, "language": "Jupyter Notebook", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["wisupai/e2m"], "name": "wisupai/e2m", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2024-09-08T08:18:11+00:00", "repo": "wisupai/e2m", "stars": 1294, "tags": ["markdown-conversion", "document-parsing", "file-converter", "data-preparation", "fine-tuning-data", "natural-language-processing", "retrieval-augmented-generation"], "topics": ["doc2x", "llm", "markdown", "text-cleaning", "e2m", "pdf-to-markdown"], "urls": [], "use_cases": ["convert pdf to markdown", "convert docx and pptx files to markdown for llm training", "prepare clean text data for rag pipelines", "extract text from epub and html into markdown", "transcribe mp3 audio files to markdown text", "batch convert documents for fine-tuning datasets"], "what_it_is": "E2M is a Python library that parses and converts many file types (doc, docx, epub, html, url, pdf, ppt, pptx, mp3, m4a) into Markdown using a parser-converter architecture. It aims to produce high-quality text data for RAG pipelines and model training or fine-tuning.", "when_to_avoid": ["you only need one specific format and a lighter single-purpose converter", "you need a polished GUI application rather than a library", "you require battle-tested enterprise-grade document conversion at scale"], "when_to_choose": ["you need a single Python library that handles many document formats as input", "you want configurable parsers and converters for markdown output", "you are building RAG or fine-tuning data pipelines from mixed file sources"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/e2m", "repo": "wisupai/e2m", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:16.307307+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:54:06.941315+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac050e249d10b989c85d0d0d22395c563367178ee5312b76fdd1dd85e9801b8e", "fetched_at": "2026-08-28T04:04:16.307307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wisupai/e2m"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 54, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 759, "days_push": 724, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}