# e2m
**Repository Path**: sijor2000/e2m
## Basic Information
- **Project Name**: e2m
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-06-08
- **Last Updated**: 2025-06-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🚀 E2M: Everything to Markdown
**Everything to Markdown**
E2M 是一个能够把多种文件类型解析并转换成 Markdown 格式的 Python 库,通过解析器+转换器的架构,实现对 doc, docx, epub, html, htm, url, pdf, ppt, pptx, mp3, m4a 等多种文件格式的转换。
✨E2M 项目的终极目标是为了 RAG 和模型训练、微调,提供高质量的数据。
项目的核心架构:
- 解析器:负责将各种文件类型解析为文本或图片数据
- 转换器:负责将文本或图片数据转换为 Markdown 格式
一般来说,对于任意类型的文件,需要先运行解析器,获取文件内部的 text、image 等数据,然后再运行转换器,将数据转换为 Markdown 格式。
## 📹 视频介绍
## 📂 所有的 Parser 和 Converter
| Parser |
| Parser Type |
Engine |
Supported File Type |
| PdfParser |
surya_layout, marker, unstructured |
pdf |
| DocParser |
pandoc, xml |
doc |
| DocxParser |
pandoc, xml |
docx |
| PptParser |
unstructured |
ppt |
| PptxParser |
unstructured |
pptx |
| UrlParser |
unstructured, jina, firecrawl |
url |
| EpubParser |
unstructured |
epub |
| HtmlParser |
unstructured |
html, htm |
| VoiceParser |
openai_whisper_api, openai_whisper_local, SpeechRecognition |
mp3, m4a |
| Converter |
| Converter Type |
Engine |
Strategy |
| ImageConverter |
litellm, zhipuai (图像识别表现不佳,不推荐) |
default |
| TextConverter |
litellm, zhipuai |
default |
### 转换器支持的模型:
1. Litellm: https://docs.litellm.ai/docs/providers/
2. Zhipuai: https://open.bigmodel.cn/dev/howuse/model
## 📦 安装
创建环境:
```bash
conda create -n e2m python=3.10
conda activate e2m
```
更新 pip:
```bash
pip install --upgrade pip
```
使用 pip 安装 E2M:
```bash
# 选项 1: 通过git安装,最推荐
pip install git+https://github.com/wisupai/e2m.git --index-url https://pypi.org/simple
# 选项 2: 通过pip安装
pip install --upgrade wisup_e2m
# 选项 3: 手动安装
git clone https://github.com/wisupai/e2m.git
cd e2m
pip install poetry
poetry build
pip install dist/wisup_e2m-0.1.63-py3-none-any.whl
```
## 启动API服务
```bash
gunicorn wisup_e2m.api.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
```
查看API文档:
- http://127.0.0.1:8000/docs
## CLI 命令行工具
### 使用marker转换pdf
转换单个pdf:
```bash
marker_single /path/to/file.pdf /path/to/output/folder --batch_multiplier 2 --max_pages 10
```
批量转换pdf:
```bash
marker /path/to/input/folder /path/to/output/folder --workers 4 --max 10 --min_length 10000
```
## ⚡️ 解析器: 快速开始
以下是使用 E2M 解析器的简单示例:
### 📄 PDF 解析器
> [!NOTE]
> 如果没有科学上网,可能连接huggingface失败,可以使用设置以下镜像:
> ```python
> import os
> os.environ['CURL_CA_BUNDLE'] = ''
> os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
> ```
```python
from wisup_e2m import PdfParser
pdf_path = "./test.pdf"
parser = PdfParser(engine="marker") # pdf 引擎: marker, unstructured, surya_layout
pdf_data = parser.parse(pdf_path)
print(pdf_data.text)
```
### 📝 DOC 解析器
```python
from wisup_e2m import DocParser
doc_path = "./test.doc"
parser = DocParser(engine="pandoc") # doc 引擎: pandoc, xml
doc_data = parser.parse(doc_path)
print(doc_data.text)
```
### 📜 DOCX 解析器
```python
from wisup_e2m import DocxParser
docx_path = "./test.docx"
parser = DocxParser(engine="pandoc") # docx 引擎: pandoc, xml
docx_data = parser.parse(docx_path)
print(docx_data.text)
```
### 📚 EPUB 解析器
```python
from wisup_e2m import EpubParser
epub_path = "./test.epub"
parser = EpubParser(engine="unstructured") # epub 引擎: unstructured
epub_data = parser.parse(epub_path)
print(epub_data.text)
```
### 🌐 HTML 解析器
```python
from wisup_e2m import HtmlParser
html_path = "./test.html"
parser = HtmlParser(engine="unstructured") # html 引擎: unstructured
html_data = parser.parse(html_path)
print(html_data.text)
```
### 🔗 URL 解析器
```python
from wisup_e2m import UrlParser
url = "https://www.example.com"
parser = UrlParser(engine="jina") # url 引擎: jina, firecrawl, unstructured
url_data = parser.parse(url)
print(url_data.text)
```
### 🖼️ PPT 解析器
```python
from wisup_e2m import PptParser
ppt_path = "./test.ppt"
parser = PptParser(engine="unstructured") # ppt 引擎: unstructured
ppt_data = parser.parse(ppt_path)
print(ppt_data.text)
```
### 🖼️ PPTX 解析器
```python
from wisup_e2m import PptxParser
pptx_path = "./test.pptx"
parser = PptxParser(engine="unstructured") # pptx 引擎: unstructured
pptx_data = parser.parse(pptx_path)
print(pptx_data.text)
```
### 🎤 语音解析器
```python
from wisup_e2m import VoiceParser
voice_path = "./test.mp3"
parser = VoiceParser(
engine="openai_whisper_local", # 语音引擎: openai_whisper_api, openai_whisper_local
model="large" # 可用模型: https://github.com/openai/whisper#available-models-and-languages
)
voice_data = parser.parse(voice_path)
print(voice_data.text)
```
## 🔄 转换器: 快速开始
以下是使用 E2M 转换器的简单示例:
### 📝 文本转换器
```python
from wisup_e2m import TextConverter
text = "从任何解析器解析的文本数据"
converter = TextConverter(
engine="litellm", # 文本引擎: litellm
model="deepseek/deepseek-chat",
api_key="你的 API 密钥",
base_url="你的基础 URL"
)
text_data = converter.convert(text)
print(text_data)
```
### 🖼️ 图片转换器
```python
from wisup_e2m import ImageConverter
images = ["./test1.png", "./test2.png"]
converter = ImageConverter(
engine="litellm", # 图片引擎: litellm
model="gpt-4o",
api_key="你的 API 密钥",
base_url="你的基础 URL"
)
image_data = converter.convert(images)
print(image_data)
```
## 🆙 下一步
### 🛠️ E2MParser
`E2MParser` 是一个集成解析器,支持多种文件类型。可以将各种文件类型解析为 Markdown 格式。
```python
from wisup_e2m import E2MParser
# 使用配置文件初始化解析器
ep = E2MParser.from_config("config.yaml")
# 解析指定文件
data = ep.parse(file_name="/path/to/file.pdf")
# 将解析的数据以字典格式打印
print(data.to_dict())
```
### 🛠️ E2MConverter
`E2MConverter` 是一个集成转换器,支持文本和图片转换。可以将文本和图片转换为 Markdown 格式。
```python
from wisup_e2m import E2MConverter
ec = E2MConverter.from_config("./config.yaml")
text = "从任何解析器解析的文本数据"
ec.convert(text=text)
images = ["test.jpg", "test.png"]
ec.convert(images=images)
```
你可以使用 `config.yaml` 文件来指定要使用的解析器和转换器。以下是一个 `config.yaml` 文件的示例:
```yaml
parsers:
doc_parser:
engine: "pandoc"
langs: ["en", "zh"]
docx_parser:
engine: "pandoc"
langs: ["en", "zh"]
epub_parser:
engine: "unstructured"
langs: ["en", "zh"]
html_parser:
engine: "unstructured"
langs: ["en", "zh"]
url_parser:
engine: "jina"
langs: ["en", "zh"]
pdf_parser:
engine: "marker"
langs: ["en", "zh"]
pptx_parser:
engine: "unstructured"
langs: ["en", "zh"]
voice_parser:
# 选项1: 使用 openai whisper API
# engine: "openai_whisper_api"
# api_base: "https://api.openai.com/v1"
# api_key: "你的 API 密钥"
# model: "whisper"
# 选项2: 使用本地 whisper 模型
engine: "openai_whisper_local"
model: "large" # 可用模型: https://github.com/openai/whisper#available-models-and-languages
converters:
text_converter:
engine: "litellm"
model: "deepseek/deepseek-chat"
api_key: "你的 API 密钥"
# base_url: ""
image_converter:
engine: "litellm"
model: "gpt-4o-mini"
api_key: "你的 API 密钥"
# base_url: ""
```
## ❓ 问答
[FAQ文档](./docs/faq/FAQ-zh.md)
## 📜 许可证
此项目基于 MIT 许可证。详情请参见 [LICENSE](LICENSE) 文件。
## 📧 联系我们
扫描以下二维码加入我们的微信群(备注来自 e2m 项目):
如有任何问题或疑问,请在 [GitHub](https://github.com/wisupai/e2m) 上创建 issue 或通过 [team@wisup.ai](mailto:team@wisup.ai) 联系我们。
商业合作联系: [team@wisup.ai](mailto:team@wisup.ai)
## 💼 加入我们
- Wisup是一家以数据和算法为核心的AI初创公司,我们专注于为企业提供高质量的数据和算法服务。我们采用线上工作的方式,欢迎全球各地的优秀人才加入我们。
- 我们的理念: 从信息到数据,从数据到知识,从知识到价值。
- 我们的理想: 用数据让世界变得更美好。
- 我们需要: 志同道合的联合创始人
- 不限学历、年龄、地域、种族、性别
- 关注AI前沿,了解AI以及相关垂直行业
- 对AI、数据充满热情,满怀理想
- 有个人强势专长、负责任、有团队合作精神
- 投递简历: [team@wisup.ai](mailto:team@wisup.ai)
- 您还需要在邮件中回答3个问题:
- 您的不可替代性在哪里?
- 您曾经遇到过最困难的事,以及您如何解决?
- 您如何看待AI的未来发展?
## 🌟 贡献