hos-m2f 0.5.3__tar.gz → 0.5.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/PKG-INFO +1 -1
- hos_m2f-0.5.5/README.md +426 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/cli/__init__.py +1 -1
- hos_m2f-0.5.5/hos_m2f/converters/md_to_docx.py +302 -0
- hos_m2f-0.5.5/hos_m2f/converters/md_to_epub.py +68 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_html.py +2 -14
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_json.py +40 -20
- hos_m2f-0.5.5/hos_m2f/converters/md_to_latex.py +63 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_xml.py +40 -20
- hos_m2f-0.5.5/hos_m2f/converters/pdf_to_md.py +120 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/PKG-INFO +1 -1
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/SOURCES.txt +7 -1
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/entry_points.txt +1 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/top_level.txt +1 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/setup.py +2 -1
- hos_m2f-0.5.5/tests/__init__.py +1 -0
- hos_m2f-0.5.5/tests/test_converters.py +179 -0
- hos_m2f-0.5.5/tests/test_latex.py +182 -0
- hos_m2f-0.5.5/tests/test_modes.py +202 -0
- hos_m2f-0.5.3/README.md +0 -130
- hos_m2f-0.5.3/hos_m2f/converters/md_to_docx.py +0 -171
- hos_m2f-0.5.3/hos_m2f/converters/md_to_epub.py +0 -108
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/__init__.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/cli/cli.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/__init__.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/base_converter.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/docx_to_md.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/epub_to_md.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/html_to_md.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/json_to_md.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/xml_to_md.py +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/dependency_links.txt +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/requires.txt +0 -0
- {hos_m2f-0.5.3 → hos_m2f-0.5.5}/setup.cfg +0 -0
hos_m2f-0.5.5/README.md
ADDED
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# HOS-M2F v1.0
|
|
2
|
+
|
|
3
|
+
## 多场景结构化内容编译引擎
|
|
4
|
+
|
|
5
|
+
HOS-M2F = 面向 AI 写作与专业文档生产的 **内容编译器引擎**
|
|
6
|
+
|
|
7
|
+
Markdown 是源码,不同 Mode 是"目标行业标准"
|
|
8
|
+
|
|
9
|
+
## 快速开始
|
|
10
|
+
|
|
11
|
+
### 安装
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# 克隆仓库
|
|
15
|
+
git clone <repository-url>
|
|
16
|
+
cd HOS-M2F
|
|
17
|
+
|
|
18
|
+
# 安装依赖
|
|
19
|
+
pip install -e .
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 基本使用
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 构建电子书
|
|
26
|
+
HOS_M2F build input.md --mode book --format epub
|
|
27
|
+
|
|
28
|
+
# 构建技术文档
|
|
29
|
+
HOS_M2F build report.md --mode paper --format pdf
|
|
30
|
+
|
|
31
|
+
# 校验专利文档
|
|
32
|
+
HOS_M2F check patent.md --mode patent
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 核心功能
|
|
36
|
+
|
|
37
|
+
### 内置官方模式
|
|
38
|
+
|
|
39
|
+
| Mode | 领域 | 核心产出 |
|
|
40
|
+
| --------- | ----- | -------------- |
|
|
41
|
+
| `paper` | 技术文档 | 报告 / 论文排版 |
|
|
42
|
+
| `patent` | 专利申请 | 合规专利文件 |
|
|
43
|
+
| `book` 📚 | 电子书出版 | EPUB / KDP |
|
|
44
|
+
| `sop` 🛠 | 运维与实施 | 巡检 / 报错 / 实施报告 |
|
|
45
|
+
|
|
46
|
+
### 输出支持
|
|
47
|
+
|
|
48
|
+
| 格式 | 描述 |
|
|
49
|
+
| ----------- | ----------------- |
|
|
50
|
+
| EPUB | 电子书格式,支持KDP出版 |
|
|
51
|
+
| DOCX | Microsoft Word文档格式 |
|
|
52
|
+
| PDF | 可打印文档格式 |
|
|
53
|
+
| JSON | 结构化数据格式 |
|
|
54
|
+
| HTML | 网页格式 |
|
|
55
|
+
| XML | 标记语言格式 |
|
|
56
|
+
| LaTeX | 学术排版格式 |
|
|
57
|
+
|
|
58
|
+
### 输入支持
|
|
59
|
+
|
|
60
|
+
| 格式 | 描述 |
|
|
61
|
+
| ----------- | ----------------- |
|
|
62
|
+
| Markdown | 主要输入格式 |
|
|
63
|
+
| PDF | 支持PDF转Markdown |
|
|
64
|
+
| DOCX | 支持Word转Markdown |
|
|
65
|
+
| EPUB | 支持电子书转Markdown |
|
|
66
|
+
| HTML | 支持网页转Markdown |
|
|
67
|
+
| XML | 支持XML转Markdown |
|
|
68
|
+
|
|
69
|
+
## 详细使用指南
|
|
70
|
+
|
|
71
|
+
### CLI 命令
|
|
72
|
+
|
|
73
|
+
#### 构建命令
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 基本构建
|
|
77
|
+
HOS_M2F build input.md --mode book --format epub
|
|
78
|
+
|
|
79
|
+
# 指定输出路径
|
|
80
|
+
HOS_M2F build input.md --mode paper --format pdf --output output.pdf
|
|
81
|
+
|
|
82
|
+
# 使用KDP模式构建电子书
|
|
83
|
+
HOS_M2F build book.md --mode book --format epub --options "{\"platform\": \"kdp\"}"
|
|
84
|
+
|
|
85
|
+
# 批量构建
|
|
86
|
+
HOS_M2F build ./docs/ --mode sop --format pdf --batch
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### 校验命令
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# 校验书籍
|
|
93
|
+
HOS_M2F check book.md --mode book --platform kdp
|
|
94
|
+
|
|
95
|
+
# 校验专利
|
|
96
|
+
HOS_M2F check patent.md --mode patent
|
|
97
|
+
|
|
98
|
+
# 校验SOP文档
|
|
99
|
+
HOS_M2F check sop.md --mode sop
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### 转换命令
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Markdown转DOCX
|
|
106
|
+
HOS_M2F convert input.md output.docx --from markdown --to docx
|
|
107
|
+
|
|
108
|
+
# PDF转Markdown
|
|
109
|
+
HOS_M2F convert input.pdf output.md --from pdf --to markdown
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Python SDK
|
|
113
|
+
|
|
114
|
+
#### 基本使用
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
from hos_m2f import Engine
|
|
118
|
+
|
|
119
|
+
# 初始化引擎
|
|
120
|
+
engine = Engine()
|
|
121
|
+
|
|
122
|
+
# 构建电子书
|
|
123
|
+
with open("input.md", "r", encoding="utf-8") as f:
|
|
124
|
+
markdown_content = f.read()
|
|
125
|
+
|
|
126
|
+
result = engine.build(
|
|
127
|
+
content=markdown_content,
|
|
128
|
+
mode="book",
|
|
129
|
+
output_format="epub",
|
|
130
|
+
options={"platform": "kdp", "title": "我的电子书", "author": "作者名"}
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
# 保存输出
|
|
134
|
+
with open("output.epub", "wb") as f:
|
|
135
|
+
f.write(result.binary)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### 格式转换
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from hos_m2f import Engine
|
|
142
|
+
|
|
143
|
+
# 初始化引擎
|
|
144
|
+
engine = Engine()
|
|
145
|
+
|
|
146
|
+
# 读取PDF文件
|
|
147
|
+
with open("input.pdf", "rb") as f:
|
|
148
|
+
pdf_content = f.read()
|
|
149
|
+
|
|
150
|
+
# 转换为Markdown
|
|
151
|
+
md_content = engine.convert_content(
|
|
152
|
+
input_format="pdf",
|
|
153
|
+
output_format="markdown",
|
|
154
|
+
input_content=pdf_content
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
# 保存结果
|
|
158
|
+
with open("output.md", "wb") as f:
|
|
159
|
+
f.write(md_content)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### 校验文档
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
from hos_m2f import Engine
|
|
166
|
+
|
|
167
|
+
# 初始化引擎
|
|
168
|
+
engine = Engine()
|
|
169
|
+
|
|
170
|
+
# 读取文档
|
|
171
|
+
with open("patent.md", "r", encoding="utf-8") as f:
|
|
172
|
+
patent_content = f.read()
|
|
173
|
+
|
|
174
|
+
# 校验文档
|
|
175
|
+
validation_result = engine.check(
|
|
176
|
+
content=patent_content,
|
|
177
|
+
mode="patent"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# 打印校验结果
|
|
181
|
+
print(f"Valid: {validation_result['valid']}")
|
|
182
|
+
if not validation_result['valid']:
|
|
183
|
+
print("Errors:")
|
|
184
|
+
for error in validation_result['errors']:
|
|
185
|
+
print(f"- {error}")
|
|
186
|
+
print("Warnings:")
|
|
187
|
+
for warning in validation_result['warnings']:
|
|
188
|
+
print(f"- {warning}")
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## 高级功能
|
|
192
|
+
|
|
193
|
+
### LaTeX 支持
|
|
194
|
+
|
|
195
|
+
HOS-M2F 支持 LaTeX 格式输出,特别适合学术论文和技术报告:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# 构建LaTeX文档
|
|
199
|
+
HOS_M2F build paper.md --mode paper --format latex
|
|
200
|
+
|
|
201
|
+
# 构建并编译为PDF
|
|
202
|
+
HOS_M2F build paper.md --mode paper --format latex --options "{\"compile\": true}"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### 自定义模式
|
|
206
|
+
|
|
207
|
+
您可以通过 YAML 文件创建自定义模式:
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
# user_modes/meeting_notes.yaml
|
|
211
|
+
name: meeting_notes
|
|
212
|
+
base: paper
|
|
213
|
+
description: 会议记录模式
|
|
214
|
+
|
|
215
|
+
rules:
|
|
216
|
+
- type: required_section
|
|
217
|
+
title: 会议主题
|
|
218
|
+
level: 2
|
|
219
|
+
- type: required_section
|
|
220
|
+
title: 参会人员
|
|
221
|
+
level: 2
|
|
222
|
+
- type: required_section
|
|
223
|
+
title: 会议内容
|
|
224
|
+
level: 2
|
|
225
|
+
- type: required_section
|
|
226
|
+
title: 行动项
|
|
227
|
+
level: 2
|
|
228
|
+
- type: required_section
|
|
229
|
+
title: 下次会议
|
|
230
|
+
level: 2
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
使用自定义模式:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
HOS_M2F build meeting.md --mode meeting_notes --format docx
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### KDP 出版支持
|
|
240
|
+
|
|
241
|
+
HOS-M2F 提供了专门的 KDP 模式,确保您的电子书符合 Amazon KDP 的出版要求:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# 构建KDP兼容的电子书
|
|
245
|
+
HOS_M2F build book.md --mode book --format epub --options "{\"platform\": \"kdp\"}"
|
|
246
|
+
|
|
247
|
+
# 校验KDP兼容性
|
|
248
|
+
HOS_M2F check book.md --mode book --platform kdp
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## 项目结构
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
hos_m2f/
|
|
255
|
+
├── engine/ # ⭐ 对外统一引擎接口
|
|
256
|
+
│ └── engine.py
|
|
257
|
+
│
|
|
258
|
+
├── modes/ # 内置模式
|
|
259
|
+
│ ├── book_mode.py
|
|
260
|
+
│ ├── patent_mode.py
|
|
261
|
+
│ ├── sop_mode.py
|
|
262
|
+
│ └── paper_mode.py
|
|
263
|
+
│
|
|
264
|
+
├── user_modes/ # 用户自定义模式
|
|
265
|
+
│ └── *.yaml
|
|
266
|
+
│
|
|
267
|
+
├── structure/ # 结构解析层
|
|
268
|
+
│ ├── semantic_parser.py
|
|
269
|
+
│ ├── book_parser.py
|
|
270
|
+
│ ├── patent_parser.py
|
|
271
|
+
│ └── sop_parser.py
|
|
272
|
+
│
|
|
273
|
+
├── renderers/ # 渲染适配层
|
|
274
|
+
│ ├── epub_renderer.py
|
|
275
|
+
│ ├── pdf_renderer.py
|
|
276
|
+
│ ├── docx_renderer.py
|
|
277
|
+
│ ├── json_renderer.py
|
|
278
|
+
│ ├── html_renderer.py
|
|
279
|
+
│ ├── xml_renderer.py
|
|
280
|
+
│ └── latex_renderer.py
|
|
281
|
+
│
|
|
282
|
+
├── converters/ # 格式转换层
|
|
283
|
+
│ ├── md_to_docx.py
|
|
284
|
+
│ ├── md_to_epub.py
|
|
285
|
+
│ ├── md_to_html.py
|
|
286
|
+
│ ├── md_to_json.py
|
|
287
|
+
│ ├── md_to_latex.py
|
|
288
|
+
│ ├── md_to_xml.py
|
|
289
|
+
│ ├── docx_to_md.py
|
|
290
|
+
│ ├── epub_to_md.py
|
|
291
|
+
│ ├── html_to_md.py
|
|
292
|
+
│ ├── json_to_md.py
|
|
293
|
+
│ ├── pdf_to_md.py
|
|
294
|
+
│ └── xml_to_md.py
|
|
295
|
+
│
|
|
296
|
+
└── ide/ # IDE 集成接口
|
|
297
|
+
├── api.py
|
|
298
|
+
└── preview_server.py
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## 扩展能力
|
|
302
|
+
|
|
303
|
+
### 语义校验引擎
|
|
304
|
+
- 专利是否缺少摘要
|
|
305
|
+
- 书籍是否缺版权页
|
|
306
|
+
- SOP 是否缺结论
|
|
307
|
+
- 论文是否缺参考文献
|
|
308
|
+
|
|
309
|
+
### 风格主题系统
|
|
310
|
+
企业可统一视觉风格:
|
|
311
|
+
|
|
312
|
+
```yaml
|
|
313
|
+
theme: blue_enterprise
|
|
314
|
+
font: Source Han Sans
|
|
315
|
+
cover_style: minimal
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### 增量构建能力
|
|
319
|
+
只更新修改过的章节,提高大书籍或长报告构建速度
|
|
320
|
+
|
|
321
|
+
### 结构化数据导出
|
|
322
|
+
SOP 报告可导出 JSON 供企业系统分析
|
|
323
|
+
|
|
324
|
+
### Mermaid 图表支持
|
|
325
|
+
自动渲染 Mermaid 图表为图片:
|
|
326
|
+
|
|
327
|
+
```markdown
|
|
328
|
+
```mermaid
|
|
329
|
+
graph TD
|
|
330
|
+
A[开始] --> B[处理]
|
|
331
|
+
B --> C[结束]
|
|
332
|
+
```
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 表格增强
|
|
336
|
+
支持复杂表格的渲染,包括对齐和样式:
|
|
337
|
+
|
|
338
|
+
```markdown
|
|
339
|
+
| 左对齐 | 居中 | 右对齐 |
|
|
340
|
+
| :--- | :---: | ---: |
|
|
341
|
+
| 内容 | 内容 | 内容 |
|
|
342
|
+
| 内容 | 内容 | 内容 |
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## 故障排除
|
|
346
|
+
|
|
347
|
+
### 常见问题
|
|
348
|
+
|
|
349
|
+
#### 1. LaTeX 编译失败
|
|
350
|
+
|
|
351
|
+
**问题**:LaTeX 编译失败,提示缺少依赖。
|
|
352
|
+
|
|
353
|
+
**解决方案**:安装 LaTeX 发行版,如 TeX Live 或 MiKTeX。
|
|
354
|
+
|
|
355
|
+
#### 2. PDF 渲染失败
|
|
356
|
+
|
|
357
|
+
**问题**:PDF 渲染失败,提示缺少 WeasyPrint 依赖。
|
|
358
|
+
|
|
359
|
+
**解决方案**:安装 WeasyPrint:
|
|
360
|
+
```bash
|
|
361
|
+
pip install weasyprint
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
#### 3. EPUB 生成错误
|
|
365
|
+
|
|
366
|
+
**问题**:EPUB 生成失败,提示缺少 ebooklib 依赖。
|
|
367
|
+
|
|
368
|
+
**解决方案**:安装 ebooklib:
|
|
369
|
+
```bash
|
|
370
|
+
pip install ebooklib
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
#### 4. Mermaid 图表不显示
|
|
374
|
+
|
|
375
|
+
**问题**:Mermaid 图表在输出中不显示。
|
|
376
|
+
|
|
377
|
+
**解决方案**:确保网络连接正常,Mermaid 图表需要通过网络渲染。
|
|
378
|
+
|
|
379
|
+
### 错误代码
|
|
380
|
+
|
|
381
|
+
| 错误代码 | 描述 | 解决方案 |
|
|
382
|
+
| ---- | ----------------- | ------------------ |
|
|
383
|
+
| 1001 | 模式不存在 | 检查模式名称是否正确 |
|
|
384
|
+
| 1002 | 输出格式不支持 | 检查格式是否在支持列表中 |
|
|
385
|
+
| 1003 | 输入文件不存在 | 检查文件路径是否正确 |
|
|
386
|
+
| 1004 | 依赖项缺失 | 安装缺失的依赖项 |
|
|
387
|
+
| 1005 | 文档结构无效 | 检查文档结构是否符合模式要求 |
|
|
388
|
+
| 1006 | KDP 兼容性错误 | 修复 KDP 兼容性问题 |
|
|
389
|
+
| 1007 | LaTeX 编译失败 | 检查 LaTeX 语法和依赖项 |
|
|
390
|
+
| 1008 | PDF 渲染失败 | 检查 WeasyPrint 安装和配置 |
|
|
391
|
+
|
|
392
|
+
## 性能优化
|
|
393
|
+
|
|
394
|
+
### 大文档处理
|
|
395
|
+
|
|
396
|
+
对于大型文档(超过 100 页),建议使用以下优化:
|
|
397
|
+
|
|
398
|
+
1. **启用增量构建**:只更新修改过的章节
|
|
399
|
+
2. **使用分段处理**:将大文档拆分为多个小文档
|
|
400
|
+
3. **选择合适的输出格式**:对于预览,使用 HTML 格式
|
|
401
|
+
4. **限制图片分辨率**:减少图片大小以提高处理速度
|
|
402
|
+
|
|
403
|
+
### 批量处理
|
|
404
|
+
|
|
405
|
+
对于批量处理多个文档,建议:
|
|
406
|
+
|
|
407
|
+
1. **使用 `--batch` 参数**:启用批量处理模式
|
|
408
|
+
2. **设置合理的并发数**:避免系统资源耗尽
|
|
409
|
+
3. **使用日志记录**:跟踪处理进度和错误
|
|
410
|
+
|
|
411
|
+
## 许可证
|
|
412
|
+
MIT License
|
|
413
|
+
|
|
414
|
+
## 贡献
|
|
415
|
+
|
|
416
|
+
欢迎贡献代码、报告问题或提出建议!
|
|
417
|
+
|
|
418
|
+
## 联系方式
|
|
419
|
+
|
|
420
|
+
- 项目主页:<repository-url>
|
|
421
|
+
- 问题反馈:<repository-url>/issues
|
|
422
|
+
- 邮件:<contact-email>
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
**HOS-M2F** - 让专业文档生产更简单!
|