feat: 新增 .doc 格式支持,借助 LibreOffice soffice

- 提取 LibreOffice 解析逻辑为公共工具函数 _utils.parse_via_libreoffice()
- 新增 DocReader 独立 Reader,支持 .doc 格式
- 新增 is_valid_doc() 文件验证函数(复用 OLE2 检测)
- 新增 doc 格式依赖配置(独立配置)
- 新增完整的测试套件,使用静态测试文件
- 更新 README.md 和 SKILL.md,添加 .doc 格式支持说明
- 新增 openspec/specs/doc-reader/spec.md 规范文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-16 10:40:43 +08:00
parent 0dd7aa221c
commit e0c6ed1638
14 changed files with 274 additions and 65 deletions

View File

@@ -1,6 +1,7 @@
"""Utils module for lyxy-document."""
from .file_detection import (
is_valid_doc,
is_valid_docx,
is_valid_pptx,
is_valid_xlsx,
@@ -11,6 +12,7 @@ from .file_detection import (
)
__all__ = [
"is_valid_doc",
"is_valid_docx",
"is_valid_pptx",
"is_valid_xlsx",

View File

@@ -6,7 +6,7 @@ from typing import List, Optional
def _is_valid_ole(file_path: str) -> bool:
"""验证 OLE2 格式文件XLS"""
"""验证 OLE2 格式文件XLS/DOC"""
try:
import olefile
except ImportError:
@@ -53,6 +53,11 @@ def is_valid_xls(file_path: str) -> bool:
return _is_valid_ole(file_path)
def is_valid_doc(file_path: str) -> bool:
"""验证文件是否为有效的 DOC 格式OLE2"""
return _is_valid_ole(file_path)
def is_valid_pdf(file_path: str) -> bool:
"""验证文件是否为有效的 PDF 格式"""
try: