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.
Files changed (34) hide show
  1. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/PKG-INFO +1 -1
  2. hos_m2f-0.5.5/README.md +426 -0
  3. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/cli/__init__.py +1 -1
  4. hos_m2f-0.5.5/hos_m2f/converters/md_to_docx.py +302 -0
  5. hos_m2f-0.5.5/hos_m2f/converters/md_to_epub.py +68 -0
  6. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_html.py +2 -14
  7. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_json.py +40 -20
  8. hos_m2f-0.5.5/hos_m2f/converters/md_to_latex.py +63 -0
  9. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/md_to_xml.py +40 -20
  10. hos_m2f-0.5.5/hos_m2f/converters/pdf_to_md.py +120 -0
  11. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/PKG-INFO +1 -1
  12. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/SOURCES.txt +7 -1
  13. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/entry_points.txt +1 -0
  14. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/top_level.txt +1 -0
  15. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/setup.py +2 -1
  16. hos_m2f-0.5.5/tests/__init__.py +1 -0
  17. hos_m2f-0.5.5/tests/test_converters.py +179 -0
  18. hos_m2f-0.5.5/tests/test_latex.py +182 -0
  19. hos_m2f-0.5.5/tests/test_modes.py +202 -0
  20. hos_m2f-0.5.3/README.md +0 -130
  21. hos_m2f-0.5.3/hos_m2f/converters/md_to_docx.py +0 -171
  22. hos_m2f-0.5.3/hos_m2f/converters/md_to_epub.py +0 -108
  23. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/__init__.py +0 -0
  24. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/cli/cli.py +0 -0
  25. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/__init__.py +0 -0
  26. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/base_converter.py +0 -0
  27. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/docx_to_md.py +0 -0
  28. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/epub_to_md.py +0 -0
  29. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/html_to_md.py +0 -0
  30. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/json_to_md.py +0 -0
  31. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f/converters/xml_to_md.py +0 -0
  32. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/dependency_links.txt +0 -0
  33. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/hos_m2f.egg-info/requires.txt +0 -0
  34. {hos_m2f-0.5.3 → hos_m2f-0.5.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hos-m2f
3
- Version: 0.5.3
3
+ Version: 0.5.5
4
4
  Summary: HOS-M2F: Markdown to Industry Standard Format Compiler Engine
5
5
  Author: HOS Team
6
6
  Author-email: team@hos-m2f.com
@@ -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** - 让专业文档生产更简单!
@@ -1,5 +1,5 @@
1
1
  """CLI模块"""
2
2
 
3
- from hos_m2f.cli.cli import CLI
3
+ from .cli import CLI
4
4
 
5
5
  __all__ = ['CLI']