[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-wisupai--e2m":3,"tool-wisupai--e2m":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",158594,2,"2026-04-16T23:34:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":78,"owner_website":76,"owner_url":79,"languages":80,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":32,"env_os":101,"env_gpu":102,"env_ram":101,"env_deps":103,"category_tags":117,"github_topics":118,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":124,"updated_at":125,"faqs":126,"releases":127},8322,"wisupai\u002Fe2m","e2m","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.","e2m 是一款功能强大的开源 Python 库，旨在将多种常见文件格式一键转换为标准的 Markdown 格式。它支持处理文档（doc, docx）、电子书（epub）、网页（html, url）、演示文稿（ppt, pptx）、PDF 以及音频文件（mp3, m4a），甚至能通过语音识别技术将音频内容转化为文本。\n\n在人工智能应用日益普及的今天，高质量的数据预处理是构建检索增强生成（RAG）系统或微调大模型的关键瓶颈。e2m 正是为了解决这一痛点而生，它通过独特的“解析器 + 转换器”双阶段架构，先精准提取文件内的文本与图像数据，再将其规范化为机器易读的 Markdown，从而为 AI 训练提供清洁、结构化的优质语料。\n\n这款工具特别适合 AI 开发者、数据科学家及研究人员使用。其技术亮点在于高度的灵活性与可扩展性：不仅内置了针对 PDF 布局分析、多引擎语音识别等多种专业解析策略，还允许用户根据需求自定义配置或接入不同的后端引擎。无论是需要批量处理历史文档库，还是从网络链接中提取知识，e2m 都能以轻量、高效的方式完成任务，是打造私有知识库和赋能大模型应用的得力助手。","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_1ad7621bb1e7.jpg\" width=\"800px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo\u002Fblob\u002Fmain\u002FLICENSE\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue\" alt=\"License\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fe2m-repo-blue\" alt=\"E2M Repo\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJing-yilin\u002FE2M\u002Ftags\u002F0.1.63\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-0.1.63-blue\" alt=\"E2M Version\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%20%7C%203.11-blue\" alt=\"Python Version\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fwisup_e2m\u002F\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpypi-wisup__e2m-blue\" alt=\"PyPI\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\u002Fblob\u002Fmain\u002FREADME-zh.md\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-中文文档-red\" alt=\"中文文档\">\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\n# 🚀 E2M: Everything to Markdown\n\n**Everything to Markdown**\n\nE2M is a Python library that can parse and convert various file types into Markdown format. By utilizing a parser-converter architecture, it supports the conversion of multiple file formats, including doc, docx, epub, html, htm, url, pdf, ppt, pptx, mp3, and m4a.\n\n✨The ultimate goal of the E2M project is to provide high-quality data for Retrieval-Augmented Generation (RAG) and model training or fine-tuning.\n\n**Core Architecture of the Project:**\n\n- **Parser**: Responsible for parsing various file types into text or image data.\n- **Converter**: Responsible for converting text or image data into Markdown format.\n\nGenerally, for any type of file, the parser is run first to extract internal data such as text and images. Then, the converter is used to transform this data into Markdown format.\n\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_c127abdd67ac.jpg\" width=\"400px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n## 📹 Video Introduction\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HvWeenEYQ\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_17d0f94fdb45.png\" alt=\"Watch the video\" width=\"400px\">\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 📂 All Converters and Parsers\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth colspan=\"3\" style=\"text-align:center;\">Parser\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Cth>Parser Type\u003C\u002Fth>\n      \u003Cth>Engine\u003C\u002Fth>\n      \u003Cth>Supported File Type\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>PdfParser\u003C\u002Ftd>\n      \u003Ctd>surya_layout, marker, unstructured\u003C\u002Ftd>\n      \u003Ctd>pdf\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>DocParser\u003C\u002Ftd>\n      \u003Ctd>pandoc, xml\u003C\u002Ftd>\n      \u003Ctd>doc\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>DocxParser\u003C\u002Ftd>\n      \u003Ctd>pandoc, xml\u003C\u002Ftd>\n      \u003Ctd>docx\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>PptParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>ppt\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>PptxParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>pptx\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>UrlParser\u003C\u002Ftd>\n      \u003Ctd>unstructured, jina, firecrawl\u003C\u002Ftd>\n      \u003Ctd>url\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>EpubParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>epub\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>HtmlParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>html, htm\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>VoiceParser\u003C\u002Ftd>\n      \u003Ctd>openai_whisper_api, openai_whisper_local, SpeechRecognition\u003C\u002Ftd>\n      \u003Ctd>mp3, m4a\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth colspan=\"3\" style=\"text-align:center;\">Converter\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Cth>Converter Type\u003C\u002Fth>\n      \u003Cth>Engine\u003C\u002Fth>\n      \u003Cth>Strategy\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>ImageConverter\u003C\u002Ftd>\n      \u003Ctd>litellm, zhipuai (Not Well in Image Recognition, Not Recommended)\u003C\u002Ftd>\n      \u003Ctd>default\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>TextConverter\u003C\u002Ftd>\n      \u003Ctd>litellm, zhipuai\u003C\u002Ftd>\n      \u003Ctd>default\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### Supported Models\n\n1. Litellm: https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Fproviders\u002F\n2. Zhipuai: https:\u002F\u002Fopen.bigmodel.cn\u002Fdev\u002Fhowuse\u002Fmodel\n\n## 📦 Installation\n\nCreate Environment:\n```bash\nconda create -n e2m python=3.10\nconda activate e2m\n```\n\nUpdate pip:\n```bash\npip install --upgrade pip\n```\n\nInstall E2M using pip:\n\n```bash\n# Option 1: Install via git, most recommended\npip install git+https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git --index-url https:\u002F\u002Fpypi.org\u002Fsimple\n# Option 2: Install via pip\npip install --upgrade wisup_e2m\n# Option 3: Manual installation\ngit clone https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git\ncd e2m\npip install poetry\npoetry build\npip install dist\u002Fwisup_e2m-0.1.63-py3-none-any.whl\n```\n\n## Start API Service\n\n```bash\ngunicorn wisup_e2m.api.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000\n```\n\nAPI Documentation:\n\n- http:\u002F\u002F127.0.0.1:8000\u002Fdocs\n\n## ⚡️ Parser Quick Start\n\nHere's simple examples demonstrating how to use E2M Parsers:\n\n### 📄 Pdf Parser\n\n```python\nfrom wisup_e2m import PdfParser\n\npdf_path = \".\u002Ftest.pdf\"\nparser = PdfParser(engine=\"marker\") # pdf engines: marker, unstructured, surya_layout\npdf_data = parser.parse(pdf_path)\nprint(pdf_data.text)\n```\n\n### 📝 Doc Parser\n\n```python\nfrom wisup_e2m import DocParser\n\ndoc_path = \".\u002Ftest.doc\"\nparser = DocParser(engine=\"pandoc\") # doc engines: pandoc, xml\ndoc_data = parser.parse(doc_path)\nprint(doc_data.text)\n```\n\n### 📜 Docx Parser\n\n```python\nfrom wisup_e2m import DocxParser\n\ndocx_path = \".\u002Ftest.docx\"\nparser = DocxParser(engine=\"pandoc\") # docx engines: pandoc, xml\ndocx_data = parser.parse(docx_path)\nprint(docx_data.text)\n```\n\n### 📚 Epub Parser\n\n```python\nfrom wisup_e2m import EpubParser\n\nepub_path = \".\u002Ftest.epub\"\nparser = EpubParser(engine=\"unstructured\") # epub engines: unstructured\nepub_data = parser.parse(epub_path)\nprint(epub_data.text)\n```\n\n### 🌐 Html Parser\n\n```python\nfrom wisup_e2m import HtmlParser\n\nhtml_path = \".\u002Ftest.html\"\nparser = HtmlParser(engine=\"unstructured\") # html engines: unstructured\nhtml_data = parser.parse(html_path)\nprint(html_data.text)\n```\n\n### 🔗 Url Parser\n\n```python\nfrom wisup_e2m import UrlParser\n\nurl = \"https:\u002F\u002Fwww.example.com\"\nparser = UrlParser(engine=\"jina\") # url engines: jina, firecrawl, unstructured\nurl_data = parser.parse(url)\nprint(url_data.text)\n```\n\n### 🖼️ Ppt Parser\n\n```python\nfrom wisup_e2m import PptParser\n\nppt_path = \".\u002Ftest.ppt\"\nparser = PptParser(engine=\"unstructured\") # ppt engines: unstructured\nppt_data = parser.parse(ppt_path)\nprint(ppt_data.text)\n```\n\n### 🖼️ Pptx Parser\n\n```python\nfrom wisup_e2m import PptxParser\n\npptx_path = \".\u002Ftest.pptx\"\nparser = PptxParser(engine=\"unstructured\") # pptx engines: unstructured\npptx_data = parser.parse(pptx_path)\nprint(pptx_data.text)\n```\n\n### 🎤 Voice Parser\n\n```python\nfrom wisup_e2m import VoiceParser\n\nvoice_path = \".\u002Ftest.mp3\"\nparser = VoiceParser(\n  engine=\"openai_whisper_local\", # voice engines: openai_whisper_api, openai_whisper_local\n  model=\"large\" # available models: https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper#available-models-and-languages\n  )\n\nvoice_data = parser.parse(voice_path)\nprint(voice_data.text)\n```\n\n## 🔄 Converter Quick Start\n\nHere's simple examples demonstrating how to use E2M Converters:\n\n### 📝 Text Converter\n\n```python\nfrom wisup_e2m import TextConverter\n\ntext = \"Parsed text data from any parser\"\nconverter = TextConverter(\n  engine=\"litellm\", # text engines: litellm\n  model=\"deepseek\u002Fdeepseek-chat\",\n  api_key=\"your api key\",\n  base_url=\"your base url\"\n  )\ntext_data = converter.convert(text)\nprint(text_data)\n```\n\n### 🖼️ Image Converter\n\n```python\nfrom wisup_e2m import ImageConverter\n\nimages = [\".\u002Ftest1.png\", \".\u002Ftest2.png\"]\nconverter = ImageConverter(\n  engine=\"litellm\", # image engines: litellm\n  model=\"gpt-4o\",\n  api_key=\"your api key\",\n  base_url=\"your base url\"\n  )\nimage_data = converter.convert(image_path)\nprint(image_data)\n```\n\n## 🆙 Next Level\n\n### 🛠️ E2MParser\n\n`E2MParser` is an integrated parser that supports multiple file types. It can be used to parse a wide range of file types into Markdown format.\n\n```python\nfrom wisup_e2m import E2MParser\n\n# Initialize the parser with your configuration file\nep = E2MParser.from_config(\"config.yaml\")\n\n# Parse the desired file\ndata = ep.parse(file_name=\"\u002Fpath\u002Fto\u002Ffile.pdf\")\n\n# Print the parsed data as a dictionary\nprint(data.to_dict())\n```\n\n### 🛠️ E2MConverter\n\n`E2MConverter` is an integrated converter that supports text and image conversion. It can be used to convert text and images into Markdown format.\n\n```python\nfrom wisup_e2m import E2MConverter\n\nec = E2MConverter.from_config(\".\u002Fconfig.yaml\")\n\ntext = \"Parsed text data from any parser\"\n\nec.convert(text=text)\n\nimages = [\"test.jpg\", \"test.png\"]\nec.convert(images=images)\n```\n\nYou can use a `config.yaml` file to specify the parsers and converters you want to use. Here is an example of a `config.yaml` file:\n\n\n```yaml\nparsers:\n    doc_parser:\n        engine: \"pandoc\"\n        langs: [\"en\", \"zh\"]\n    docx_parser:\n        engine: \"pandoc\"\n        langs: [\"en\", \"zh\"]\n    epub_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    html_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    url_parser:\n        engine: \"jina\"\n        langs: [\"en\", \"zh\"]\n    pdf_parser:\n        engine: \"marker\"\n        langs: [\"en\", \"zh\"]\n    pptx_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    voice_parser:\n        # option 1: use openai whisper api\n        # engine: \"openai_whisper_api\"\n        # api_base: \"https:\u002F\u002Fapi.openai.com\u002Fv1\"\n        # api_key: \"your_api_key\"\n        # model: \"whisper\"\n\n        # option 2: use local whisper model\n        engine: \"openai_whisper_local\"\n        model: \"large\" # available models: https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper#available-models-and-languages\n\nconverters:\n    text_converter:\n        engine: \"litellm\"\n        model: \"deepseek\u002Fdeepseek-chat\"\n        api_key: \"your_api_key\"\n        # base_url: \"\"\n    image_converter:\n        engine: \"litellm\"\n        model: \"gpt-4o-mini\"\n        api_key: \"your_api_key\"\n        # base_url: \"\"\n```\n\n## ❓ Q&A\n\n[FAQ Document](.\u002Fdocs\u002Ffaq\u002FFAQ-en.md)\n\n## 📜 License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## 📧 Contact\n\nYou can scan the QR code below to join our WeChat group:\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fwechat_QR.png\" width=\"200px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\nFor any questions or inquiries, please open an issue on [GitHub](https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m) or contact us at [team@wisup.ai](mailto:team@wisup.ai).\n\nContact for business cooperation: [team@wisup.ai](mailto:team@wisup.ai)\n\n## 💼 Join Us\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_0137cedb0a09.png\" width=\"400px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n- Wisup is an AI startup with a strong focus on data and algorithms. We specialize in providing high-quality data and algorithm services for enterprises. We embrace a remote working model and welcome talented individuals from around the world to join us.\n\n- Our philosophy: From information to data, from data to knowledge, from knowledge to value.\n\n- Our vision: To make the world a better place through data.\n\n- We are looking for: Like-minded Co-Founders\n  - No restrictions on education, age, location, race, or gender\n  - Keen interest in AI and familiarity with AI and related vertical industries\n  - Passionate about AI and data, with a strong sense of purpose\n  - Possess unique strengths, responsibility, and a team-oriented mindset\n\n- To apply, send your resume to: [team@wisup.ai](mailto:team@wisup.ai)\n\n- You also need to answer three questions in your email:\n  - What makes you irreplaceable?\n  - What is the most challenging situation you have faced, and how did you resolve it?\n  - How do you view the future development of AI?\n\n## 🌟 Contributing\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_cdb2397cb8a0.png\" \u002F>\n\u003C\u002Fa>\n","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_1ad7621bb1e7.jpg\" width=\"800px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo\u002Fblob\u002Fmain\u002FLICENSE\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue\" alt=\"License\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fe2m-repo-blue\" alt=\"E2M Repo\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJing-yilin\u002FE2M\u002Ftags\u002F0.1.63\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-0.1.63-blue\" alt=\"E2M Version\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%20%7C%203.11-blue\" alt=\"Python Version\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fwisup_e2m\u002F\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpypi-wisup__e2m-blue\" alt=\"PyPI\">\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\u002Fblob\u002Fmain\u002FREADME-zh.md\">\n        \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-中文文档-red\" alt=\"中文文档\">\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\n# 🚀 E2M: 一切转 Markdown\n\n**一切转 Markdown**\n\nE2M 是一个 Python 库，能够解析并转换多种文件类型为 Markdown 格式。通过采用解析器-转换器架构，它支持 doc、docx、epub、html、htm、url、pdf、ppt、pptx、mp3 和 m4a 等多种文件格式的转换。\n\n✨E2M 项目的最终目标是为检索增强生成（RAG）以及模型训练或微调提供高质量的数据。\n\n**项目核心架构：**\n\n- **解析器**：负责将各种文件类型解析为文本或图像数据。\n- **转换器**：负责将文本或图像数据转换为 Markdown 格式。\n\n通常情况下，对于任何类型的文件，都会先运行解析器提取其中的文本和图像等内部数据，然后再使用转换器将这些数据转换成 Markdown 格式。\n\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_c127abdd67ac.jpg\" width=\"400px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n## 📹 视频介绍\n\n\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1HvWeenEYQ\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_17d0f94fdb45.png\" alt=\"观看视频\" width=\"400px\">\n  \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n## 📂 所有转换器与解析器\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth colspan=\"3\" style=\"text-align:center;\">解析器\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Cth>解析器类型\u003C\u002Fth>\n      \u003Cth>引擎\u003C\u002Fth>\n      \u003Cth>支持的文件类型\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>PdfParser\u003C\u002Ftd>\n      \u003Ctd>surya_layout, marker, unstructured\u003C\u002Ftd>\n      \u003Ctd>pdf\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>DocParser\u003C\u002Ftd>\n      \u003Ctd>pandoc, xml\u003C\u002Ftd>\n      \u003Ctd>doc\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>DocxParser\u003C\u002Ftd>\n      \u003Ctd>pandoc, xml\u003C\u002Ftd>\n      \u003Ctd>docx\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>PptParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>ppt\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>PptxParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>pptx\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>UrlParser\u003C\u002Ftd>\n      \u003Ctd>unstructured, jina, firecrawl\u003C\u002Ftd>\n      \u003Ctd>url\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>EpubParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>epub\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>HtmlParser\u003C\u002Ftd>\n      \u003Ctd>unstructured\u003C\u002Ftd>\n      \u003Ctd>html, htm\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>VoiceParser\u003C\u002Ftd>\n      \u003Ctd>openai_whisper_api, openai_whisper_local, SpeechRecognition\u003C\u002Ftd>\n      \u003Ctd>mp3, m4a\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth colspan=\"3\" style=\"text-align:center;\">转换器\u003C\u002Fth>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Cth>转换器类型\u003C\u002Fth>\n      \u003Cth>引擎\u003C\u002Fth>\n      \u003Cth>策略\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>ImageConverter\u003C\u002Ftd>\n      \u003Ctd>litellm, zhipuai (在图像识别方面表现不佳，不推荐使用)\u003C\u002Ftd>\n      \u003Ctd>默认\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>TextConverter\u003C\u002Ftd>\n      \u003Ctd>litellm, zhipuai\u003C\u002Ftd>\n      \u003Ctd>默认\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 支持的模型\n\n1. Litellm：https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Fproviders\u002F\n2. Zhipuai：https:\u002F\u002Fopen.bigmodel.cn\u002Fdev\u002Fhowuse\u002Fmodel\n\n## 📦 安装\n\n创建环境：\n```bash\nconda create -n e2m python=3.10\nconda activate e2m\n```\n\n更新 pip：\n```bash\npip install --upgrade pip\n```\n\n使用 pip 安装 E2M：\n\n```bash\n# 选项 1：通过 git 安装，推荐方式\npip install git+https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git --index-url https:\u002F\u002Fpypi.org\u002Fsimple\n# 选项 2：通过 pip 安装\npip install --upgrade wisup_e2m\n# 选项 3：手动安装\ngit clone https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git\ncd e2m\npip install poetry\npoetry build\npip install dist\u002Fwisup_e2m-0.1.63-py3-none-any.whl\n```\n\n## 启动 API 服务\n\n```bash\ngunicorn wisup_e2m.api.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000\n```\n\nAPI 文档：\n\n- http:\u002F\u002F127.0.0.1:8000\u002Fdocs\n\n## ⚡️ 解析器快速入门\n\n以下是一些简单的示例，展示了如何使用 E2M 的解析器：\n\n### 📄 PDF 解析器\n\n```python\nfrom wisup_e2m import PdfParser\n\npdf_path = \".\u002Ftest.pdf\"\nparser = PdfParser(engine=\"marker\") # pdf 引擎：marker、unstructured、surya_layout\npdf_data = parser.parse(pdf_path)\nprint(pdf_data.text)\n```\n\n### 📝 DOC 解析器\n\n```python\nfrom wisup_e2m import DocParser\n\ndoc_path = \".\u002Ftest.doc\"\nparser = DocParser(engine=\"pandoc\") # doc 引擎：pandoc、xml\ndoc_data = parser.parse(doc_path)\nprint(doc_data.text)\n```\n\n### 📜 DOCX 解析器\n\n```python\nfrom wisup_e2m import DocxParser\n\ndocx_path = \".\u002Ftest.docx\"\nparser = DocxParser(engine=\"pandoc\") # docx 引擎：pandoc、xml\ndocx_data = parser.parse(docx_path)\nprint(docx_data.text)\n```\n\n### 📚 EPUB 解析器\n\n```python\nfrom wisup_e2m import EpubParser\n\nepub_path = \".\u002Ftest.epub\"\nparser = EpubParser(engine=\"unstructured\") # epub 引擎：unstructured\nepub_data = parser.parse(epub_path)\nprint(epub_data.text)\n```\n\n### 🌐 HTML 解析器\n\n```python\nfrom wisup_e2m import HtmlParser\n\nhtml_path = \".\u002Ftest.html\"\nparser = HtmlParser(engine=\"unstructured\") # html 引擎：unstructured\nhtml_data = parser.parse(html_path)\nprint(html_data.text)\n```\n\n### 🔗 URL 解析器\n\n```python\nfrom wisup_e2m import UrlParser\n\nurl = \"https:\u002F\u002Fwww.example.com\"\nparser = UrlParser(engine=\"jina\") # url 引擎：jina、firecrawl、unstructured\nurl_data = parser.parse(url)\nprint(url_data.text)\n```\n\n### 🖼️ PPT 解析器\n\n```python\nfrom wisup_e2m import PptParser\n\nppt_path = \".\u002Ftest.ppt\"\nparser = PptParser(engine=\"unstructured\") # ppt 引擎：unstructured\nppt_data = parser.parse(ppt_path)\nprint(ppt_data.text)\n```\n\n### 🖼️ PPTX 解析器\n\n```python\nfrom wisup_e2m import PptxParser\n\npptx_path = \".\u002Ftest.pptx\"\nparser = PptxParser(engine=\"unstructured\") # pptx 引擎：unstructured\npptx_data = parser.parse(pptx_path)\nprint(pptx_data.text)\n```\n\n### 🎤 语音解析器\n\n```python\nfrom wisup_e2m import VoiceParser\n\nvoice_path = \".\u002Ftest.mp3\"\nparser = VoiceParser(\n  engine=\"openai_whisper_local\", # 语音引擎：openai_whisper_api、openai_whisper_local\n  model=\"large\" # 可用模型：https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper#available-models-and-languages\n  )\n\nvoice_data = parser.parse(voice_path)\nprint(voice_data.text)\n```\n\n## 🔄 转换器快速入门\n\n以下是展示如何使用 E2M 转换器的简单示例：\n\n### 📝 文本转换器\n\n```python\nfrom wisup_e2m import TextConverter\n\ntext = \"从任何解析器中解析出的文本数据\"\nconverter = TextConverter(\n  engine=\"litellm\", # 文本引擎：litellm\n  model=\"deepseek\u002Fdeepseek-chat\",\n  api_key=\"您的 API 密钥\",\n  base_url=\"您的基础 URL\"\n  )\ntext_data = converter.convert(text)\nprint(text_data)\n```\n\n### 🖼️ 图像转换器\n\n```python\nfrom wisup_e2m import ImageConverter\n\nimages = [\".\u002Ftest1.png\", \".\u002Ftest2.png\"]\nconverter = ImageConverter(\n  engine=\"litellm\", # 图像引擎：litellm\n  model=\"gpt-4o\",\n  api_key=\"您的 API 密钥\",\n  base_url=\"您的基础 URL\"\n  )\nimage_data = converter.convert(image_path)\nprint(image_data)\n```\n\n## 🆙 更高阶用法\n\n### 🛠️ E2MParser\n\n`E2MParser` 是一个集成的解析器，支持多种文件类型。它可以将广泛的文件类型解析为 Markdown 格式。\n\n```python\nfrom wisup_e2m import E2MParser\n\n# 使用您的配置文件初始化解析器\nep = E2MParser.from_config(\"config.yaml\")\n\n# 解析所需的文件\ndata = ep.parse(file_name=\"\u002Fpath\u002Fto\u002Ffile.pdf\")\n\n# 将解析后的数据以字典形式打印\nprint(data.to_dict())\n```\n\n### 🛠️ E2MConverter\n\n`E2MConverter` 是一个集成的转换器，支持文本和图像的转换。它可以将文本和图像转换为 Markdown 格式。\n\n```python\nfrom wisup_e2m import E2MConverter\n\nec = E2MConverter.from_config(\".\u002Fconfig.yaml\")\n\ntext = \"从任何解析器中解析出的文本数据\"\n\nec.convert(text=text)\n\nimages = [\"test.jpg\", \"test.png\"]\nec.convert(images=images)\n```\n\n您可以使用 `config.yaml` 文件来指定您想要使用的解析器和转换器。以下是一个 `config.yaml` 文件的示例：\n\n```yaml\nparsers:\n    doc_parser:\n        engine: \"pandoc\"\n        langs: [\"en\", \"zh\"]\n    docx_parser:\n        engine: \"pandoc\"\n        langs: [\"en\", \"zh\"]\n    epub_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    html_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    url_parser:\n        engine: \"jina\"\n        langs: [\"en\", \"zh\"]\n    pdf_parser:\n        engine: \"marker\"\n        langs: [\"en\", \"zh\"]\n    pptx_parser:\n        engine: \"unstructured\"\n        langs: [\"en\", \"zh\"]\n    voice_parser:\n        # 选项 1：使用 OpenAI Whisper API\n        # engine: \"openai_whisper_api\"\n        # api_base: \"https:\u002F\u002Fapi.openai.com\u002Fv1\"\n        # api_key: \"您的 API 密钥\"\n        # model: \"whisper\"\n\n        # 选项 2：使用本地 Whisper 模型\n        engine: \"openai_whisper_local\"\n        model: \"large\" # 可用模型：https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper#available-models-and-languages\n\nconverters:\n    text_converter:\n        engine: \"litellm\"\n        model: \"deepseek\u002Fdeepseek-chat\"\n        api_key: \"您的 API 密钥\"\n        # base_url: \"\"\n    image_converter:\n        engine: \"litellm\"\n        model: \"gpt-4o-mini\"\n        api_key: \"您的 API 密钥\"\n        # base_url: \"\"\n```\n\n## ❓ 常见问题解答\n\n[FAQ 文档](.\u002Fdocs\u002Ffaq\u002FFAQ-en.md)\n\n## 📜 许可证\n\n本项目采用 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE) 文件。\n\n## 📧 联系方式\n\n您可以通过扫描下方的二维码加入我们的微信交流群：\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fwechat_QR.png\" width=\"200px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n如有任何问题或咨询，请在 [GitHub](https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m) 上提交 issue，或发送邮件至 [team@wisup.ai](mailto:team@wisup.ai)。\n\n商务合作联系：[team@wisup.ai](mailto:team@wisup.ai)\n\n## 💼 加入我们\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_0137cedb0a09.png\" width=\"400px\" alt=\"wisup_e2m Logo\">\n\u003C\u002Fp>\n\n- Wisup 是一家专注于数据与算法的人工智能初创公司。我们专门为企业提供高质量的数据与算法服务。我们采用远程办公模式，欢迎全球各地的优秀人才加入我们。\n\n- 我们的理念：从信息到数据，从数据到知识，从知识到价值。\n- 我们的愿景：通过数据让世界变得更美好。\n- 我们正在寻找志同道合的联合创始人：\n  - 不限学历、年龄、地域、种族或性别\n  - 对人工智能有浓厚兴趣，并熟悉人工智能及相关行业\n  - 热爱人工智能与数据，具有强烈的目标感\n  - 具备独特的优势、责任心及团队合作精神\n\n- 如需申请，请将简历发送至：[team@wisup.ai](mailto:team@wisup.ai)\n\n- 您还需要在邮件中回答三个问题：\n  - 您为何不可替代？\n  - 您曾遇到过的最棘手的情况是什么？您是如何解决的？\n  - 您如何看待人工智能的未来发展？\n\n## 🌟 贡献\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_readme_cdb2397cb8a0.png\" \u002F>\n\u003C\u002Fa>","# E2M 快速上手指南\n\nE2M (Everything to Markdown) 是一个强大的 Python 库，旨在将各种文件格式（如 PDF、Word、PPT、音频等）解析并转换为 Markdown 格式。它是为检索增强生成（RAG）和模型训练提供高质量数据的理想工具。\n\n## 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows\n*   **Python 版本**: 3.10 或 3.11\n*   **包管理器**: 推荐使用 `conda` 管理环境，或使用 `pip`\n\n## 安装步骤\n\n### 1. 创建并激活虚拟环境\n推荐使用 conda 创建独立的运行环境：\n\n```bash\nconda create -n e2m python=3.10\nconda activate e2m\n```\n\n### 2. 升级 pip\n确保包管理器为最新版本以避免兼容性问题：\n\n```bash\npip install --upgrade pip\n```\n\n### 3. 安装 E2M\n您可以选择以下任一方式进行安装（推荐方式 1）：\n\n**方式 1：通过 Git 安装（推荐，获取最新代码）**\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git --index-url https:\u002F\u002Fpypi.org\u002Fsimple\n```\n\n**方式 2：通过 PyPI 安装**\n```bash\npip install --upgrade wisup_e2m\n```\n\n**方式 3：手动源码安装**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwisupai\u002Fe2m.git\ncd e2m\npip install poetry\npoetry build\npip install dist\u002Fwisup_e2m-0.1.63-py3-none-any.whl\n```\n\n## 基本使用\n\nE2M 的核心流程分为两步：**Parser（解析器）** 提取文件内容，**Converter（转换器）** 将其转为 Markdown。以下是针对常见文件类型的快速示例。\n\n### 1. 解析常见文档 (PDF\u002FWord\u002FExcel\u002FPPT)\n\n**解析 PDF 文件:**\n```python\nfrom wisup_e2m import PdfParser\n\npdf_path = \".\u002Ftest.pdf\"\n# 支持引擎：marker, unstructured, surya_layout\nparser = PdfParser(engine=\"marker\") \npdf_data = parser.parse(pdf_path)\nprint(pdf_data.text)\n```\n\n**解析 Word (.doc\u002F.docx) 文件:**\n```python\nfrom wisup_e2m import DocParser, DocxParser\n\n# .doc 示例\ndoc_path = \".\u002Ftest.doc\"\nparser = DocParser(engine=\"pandoc\") # 支持引擎：pandoc, xml\ndoc_data = parser.parse(doc_path)\nprint(doc_data.text)\n\n# .docx 示例\ndocx_path = \".\u002Ftest.docx\"\nparser = DocxParser(engine=\"pandoc\")\ndocx_data = parser.parse(docx_path)\nprint(docx_data.text)\n```\n\n**解析 PPT (.ppt\u002F.pptx) 文件:**\n```python\nfrom wisup_e2m import PptParser, PptxParser\n\npptx_path = \".\u002Ftest.pptx\"\nparser = PptxParser(engine=\"unstructured\")\npptx_data = parser.parse(pptx_path)\nprint(pptx_data.text)\n```\n\n### 2. 解析网页与电子书\n\n**解析 URL:**\n```python\nfrom wisup_e2m import UrlParser\n\nurl = \"https:\u002F\u002Fwww.example.com\"\n# 支持引擎：jina, firecrawl, unstructured\nparser = UrlParser(engine=\"jina\") \nurl_data = parser.parse(url)\nprint(url_data.text)\n```\n\n**解析 EPUB:**\n```python\nfrom wisup_e2m import EpubParser\n\nepub_path = \".\u002Ftest.epub\"\nparser = EpubParser(engine=\"unstructured\")\nepub_data = parser.parse(epub_path)\nprint(epub_data.text)\n```\n\n### 3. 解析音频文件 (语音转文字)\n\n需要配置 Whisper 引擎（支持本地模型或 API）：\n\n```python\nfrom wisup_e2m import VoiceParser\n\nvoice_path = \".\u002Ftest.mp3\"\nparser = VoiceParser(\n  engine=\"openai_whisper_local\", # 或 openai_whisper_api\n  model=\"large\" \n)\nvoice_data = parser.parse(voice_path)\nprint(voice_data.text)\n```\n\n### 4. 内容转换 (Text\u002FImage to Markdown)\n\n如果您需要将解析出的文本或通过 OCR 识别的图片进一步优化为 Markdown 格式，可以使用 Converter（需配置 LLM API Key）：\n\n**文本转换:**\n```python\nfrom wisup_e2m import TextConverter\n\ntext = \"Parsed text data from any parser\"\nconverter = TextConverter(\n  engine=\"litellm\", \n  model=\"deepseek\u002Fdeepseek-chat\",\n  api_key=\"your_api_key\",\n  base_url=\"your_base_url\"\n)\ntext_data = converter.convert(text)\nprint(text_data)\n```\n\n**图片转换:**\n```python\nfrom wisup_e2m import ImageConverter\n\nimages = [\".\u002Ftest1.png\"]\nconverter = ImageConverter(\n  engine=\"litellm\", \n  model=\"gpt-4o\",\n  api_key=\"your_api_key\",\n  base_url=\"your_base_url\"\n)\nimage_data = converter.convert(images)\nprint(image_data)\n```\n\n### 5. 高级用法：统一配置解析\n\n通过 `config.yaml` 配置文件，可以使用 `E2MParser` 和 `E2MConverter` 统一管理多种文件类型的解析策略，无需为每个文件类型单独编写代码。\n\n**config.yaml 示例片段:**\n```yaml\nparsers:\n    pdf_parser:\n        engine: \"marker\"\n        langs: [\"en\", \"zh\"]\n    voice_parser:\n        engine: \"openai_whisper_local\"\n        model: \"large\"\nconverters:\n    text_converter:\n        engine: \"litellm\"\n        model: \"deepseek\u002Fdeepseek-chat\"\n        api_key: \"your_api_key\"\n```\n\n**Python 调用:**\n```python\nfrom wisup_e2m import E2MParser, E2MConverter\n\n# 初始化\nep = E2MParser.from_config(\"config.yaml\")\nec = E2MConverter.from_config(\"config.yaml\")\n\n# 解析任意支持的文件\ndata = ep.parse(file_name=\"\u002Fpath\u002Fto\u002Ffile.pdf\")\n\n# 转换内容\nec.convert(text=data.text)\n```","某 AI 初创公司的数据工程师正在为垂直领域的法律大模型构建 RAG（检索增强生成）知识库，需要处理海量的非结构化文档。\n\n### 没有 e2m 时\n- **格式转换繁琐**：面对 PDF、Word、PPT 和音频会议记录等多种格式，需分别编写不同的解析脚本或手动复制粘贴，耗时且易出错。\n- **结构信息丢失**：传统提取工具往往只保留纯文本，导致文档中的标题层级、表格数据和图片说明在转换后变得混乱不堪，无法被大模型准确理解。\n- **音频处理割裂**：会议录音（mp3\u002Fm4a）需要先单独使用语音转文字工具，再人工校对并整理格式，流程断裂严重。\n- **清洗成本高昂**：提取出的内容包含大量乱码和无关噪声，团队需花费数天时间进行人工清洗才能用于模型微调。\n\n### 使用 e2m 后\n- **一站式统一处理**：e2m 通过统一的接口直接支持 docx、pdf、pptx 乃至 mp3 等十多种格式，无需维护多套解析代码，实现“一切皆 Markdown\"。\n- **完美保留文档结构**：利用内置的智能 Parser 和 Converter，e2m 能精准识别并还原标题、列表及表格的 Markdown 语法，确保输入给大模型的数据逻辑清晰。\n- **音视频自动转写**：调用 e2m 的 VoiceParser 即可将会议录音直接转换为带时间戳和段落的 Markdown 文本，无缝融入知识库构建流程。\n- **即插即用的高质量数据**：输出的 Markdown 文件天然适配 RAG 切片策略，大幅减少了后续清洗工作，让数据准备周期从数周缩短至数小时。\n\ne2m 通过将异构数据高效转化为标准化的 Markdown，彻底打通了从原始文件到高质量大模型训练数据的“最后一公里”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwisupai_e2m_1ad7621b.jpg","wisupai","WisupAI","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fwisupai_4f483e75.png","",null,"team@wisup.ai","wisup_ai","https:\u002F\u002Fgithub.com\u002Fwisupai",[81,85,89,93],{"name":82,"color":83,"percentage":84},"Jupyter Notebook","#DA5B0B",73.7,{"name":86,"color":87,"percentage":88},"Python","#3572A5",16.8,{"name":90,"color":91,"percentage":92},"HTML","#e34c26",9.4,{"name":94,"color":95,"percentage":96},"Makefile","#427819",0.1,1287,71,"2026-04-15T14:55:53","Apache-2.0","未说明","可选。若使用本地 Whisper 模型 (openai_whisper_local) 或特定 PDF 解析引擎，可能需要 GPU；若使用 API 模式则无需 GPU。具体型号和显存未说明。",{"notes":104,"python":105,"dependencies":106},"1. 推荐使用 conda 创建 Python 3.10 环境进行安装。\n2. 支持多种解析引擎（如 PDF 解析支持 marker, unstructured, surya_layout），部分引擎可能需额外系统依赖（如 pandoc）。\n3. 语音解析支持本地运行 Whisper 模型或调用 OpenAI API，本地运行需下载相应模型文件。\n4. 文本和图片转换功能依赖大模型 API（如 litellm, zhipuai），需配置相应的 API Key 和 Base URL。\n5. 项目旨在为 RAG 和模型训练提供高质量数据，核心架构分为 Parser（解析）和 Converter（转换）。","3.10 | 3.11",[107,108,109,110,111,112,113,114,115,116],"wisup_e2m","gunicorn","uvicorn","poetry","litellm","unstructured","pandoc","openai-whisper","surya_layout","marker",[35,14],[119,120,121,122,64,123],"doc2x","llm","markdown","text-cleaning","pdf-to-markdown","2026-03-27T02:49:30.150509","2026-04-17T09:53:26.234302",[],[]]