Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wisupai/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.
https://github.com/wisupai/e2m

doc2x e2m llm markdown pdf-to-markdown text-cleaning

Last synced: 1 day ago
JSON representation

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.

Awesome Lists containing this project

README

        


wisup_e2m Logo



License


E2M Repo


E2M Version


Python Version


PyPI


中文文档

# 🚀 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 格式。


wisup_e2m Logo

## 📹 视频介绍



观看视频

## 📂 所有的 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 项目):


wisup_e2m Logo

如有任何问题或疑问,请在 [GitHub](https://github.com/wisupai/e2m) 上创建 issue 或通过 [[email protected]](mailto:[email protected]) 联系我们。

商业合作联系: [[email protected]](mailto:[email protected])

## 💼 加入我们


wisup_e2m Logo

- Wisup是一家以数据和算法为核心的AI初创公司,我们专注于为企业提供高质量的数据和算法服务。我们采用线上工作的方式,欢迎全球各地的优秀人才加入我们。

- 我们的理念: 从信息到数据,从数据到知识,从知识到价值。

- 我们的理想: 用数据让世界变得更美好。

- 我们需要: 志同道合的联合创始人
- 不限学历、年龄、地域、种族、性别
- 关注AI前沿,了解AI以及相关垂直行业
- 对AI、数据充满热情,满怀理想
- 有个人强势专长、负责任、有团队合作精神

- 投递简历: [[email protected]](mailto:[email protected])

- 您还需要在邮件中回答3个问题:
- 您的不可替代性在哪里?
- 您曾经遇到过最困难的事,以及您如何解决?
- 您如何看待AI的未来发展?

## 🌟 贡献