agentic_huge_data_base / wiki
页面 Mayan EDMS · 4.2 文档处理·DeepWiki 中文全文译文

4.2 · 文档处理(Document Processing)

企业电子文档治理 · 聚焦本章的模块关系、源码依据与实现要点。

项目Mayan EDMS 章节4.2 状态全文译文 模块入库与解析、文档对象与元数据、工作流与编排、配置治理
源码线索
  • mayan/apps/converter/__init__.py
  • mayan/apps/converter/backends/__init__.py
  • mayan/apps/converter/backends/python.py
  • mayan/apps/converter/classes.py
  • mayan/apps/converter/layers.py
  • mayan/apps/converter/literals.py
  • mayan/apps/converter/migrations/0017_auto_20200810_0504.py
  • mayan/apps/converter/migrations/0018_asset.py
  • mayan/apps/converter/settings.py
  • mayan/apps/converter/tasks.py
模块标签
  • 入库与解析
  • 文档对象与元数据
  • 工作流与编排
  • 配置治理
  • 系统架构

章节正文

文档处理

文档处理

相关源文件

本章引用的主要源码文件:

  • mayan/apps/converter/__init__.py
  • mayan/apps/converter/backends/__init__.py
  • mayan/apps/converter/backends/python.py
  • mayan/apps/converter/classes.py
  • mayan/apps/converter/layers.py
  • mayan/apps/converter/literals.py
  • mayan/apps/converter/migrations/0017_auto_20200810_0504.py
  • mayan/apps/converter/migrations/0018_asset.py
  • mayan/apps/converter/settings.py
  • mayan/apps/converter/tasks.py
  • mayan/apps/document_parsing/parsers.py
  • mayan/apps/documents/forms/document_forms.py
  • mayan/apps/documents/migrations/0007_remove_documentpage_page_label.py
  • mayan/apps/documents/utils.py
  • mayan/apps/dynamic_search/templatetags/__init__.py
  • mayan/apps/dynamic_search/templatetags/search_tags.py
  • mayan/apps/dynamic_search/tests/test_api.py
  • mayan/apps/file_metadata/drivers/exiftool.py
  • mayan/apps/file_metadata/literals.py
  • mayan/apps/file_metadata/tasks.py
  • mayan/apps/metadata/views/__init__.py
  • mayan/apps/metadata/views/document_views.py
  • mayan/apps/metadata/views/metadata_type_views.py
  • mayan/apps/ocr/admin.py
  • mayan/apps/ocr/api_views.py
  • mayan/apps/ocr/apps.py
  • mayan/apps/ocr/backends/literals.py
  • mayan/apps/ocr/backends/tesseract.py
  • mayan/apps/ocr/classes.py
  • mayan/apps/ocr/exceptions.py
  • mayan/apps/ocr/icons.py
  • mayan/apps/ocr/links.py
  • mayan/apps/ocr/models.py
  • mayan/apps/ocr/permissions.py
  • mayan/apps/ocr/serializers.py
  • mayan/apps/ocr/settings.py
  • mayan/apps/ocr/tests/mixins.py
  • mayan/apps/ocr/tests/test_document_version_api.py
  • mayan/apps/ocr/tests/test_links.py
  • mayan/apps/ocr/tests/test_views.py
  • mayan/apps/ocr/urls.py
  • mayan/apps/ocr/views.py
  • mayan/apps/sources/managers.py

本文档记录了 Mayan EDMS 中的文档处理子系统,该子系统负责对上传的文档进行自动转换、文本提取和元数据处理。系统通过多个处理阶段(包括格式转换、OCR(光学字符识别)、内容解析和元数据提取)将原始文档文件转换为可搜索、可查看且组织有序的内容。

关于文档入库和上传机制的信息,请参见文档入库。关于已处理内容的组织和索引详情,请参见文档组织

核心转换系统

文档转换系统基于 ConverterBase 类构建,该类提供了一个统一接口,用于将各种文档格式转换为图像以供显示和进一步处理。

转换器架构

转换器系统通过可插拔架构支持多个后端:

Mayan EDMS · 转换器架构 · 图 1
Mayan EDMS · 转换器架构 · 图 1

来源:mayan/apps/converter/classes.py:74-273, mayan/apps/converter/backends/python.py:64-206, mayan/apps/converter/settings.py:61-72

文档格式转换

系统通过特定的转换路径处理多种文档格式:

格式类型MIME 类型转换方法外部依赖
PDFapplication/pdf使用 PyPDF2 + pdftoppm 直接处理pdftoppm, pdfinfo
Office 文档各种 Office/OpenDocument 格式通过 LibreOffice 转换为 PDFlibreoffice
图像标准图像格式使用 PIL/Pillow 处理无(Python 库)
MSG 文件application/vnd.ms-outlook归档提取 + 内容转换

Python 后端实现了核心转换逻辑:

Mayan EDMS · 文档格式转换 · 图 2
Mayan EDMS · 文档格式转换 · 图 2

来源:mayan/apps/converter/backends/python.py:64-206, mayan/apps/converter/literals.py:7-51, mayan/apps/converter/classes.py:152-260

OCR 处理系统

OCR 系统使用可配置的 OCR 后端从文档图像中提取文本内容,其中 Tesseract 是主要实现。

OCR 架构
Mayan EDMS · OCR 架构 · 图 3
Mayan EDMS · OCR 架构 · 图 3

来源:mayan/apps/ocr/classes.py:8-31, mayan/apps/ocr/backends/tesseract.py:20-116, mayan/apps/ocr/models.py:17-74

OCR 后端实现

Tesseract 后端提供了主要的 OCR 功能:

Mayan EDMS · OCR 后端实现 · 图 4
Mayan EDMS · OCR 后端实现 · 图 4

来源:mayan/apps/ocr/backends/tesseract.py:78-116, mayan/apps/ocr/backends/literals.py:1-9

OCR 内容管理

系统通过模型、视图和 API 端点提供全面的 OCR 内容管理:

组件用途关键类/方法
内容存储按页面存储提取的文本DocumentVersionPageOCRContent
类型设置按文档类型配置自动 OCRDocumentTypeOCRSettings
提交触发 OCR 处理submit_for_ocr() 方法
内容访问查看和编辑 OCR 结果OCR 视图和 API 端点
内容删除移除 OCR 数据delete_content_for() 管理器方法

来源:mayan/apps/ocr/models.py:17-74, mayan/apps/ocr/views.py:38-270, mayan/apps/ocr/api_views.py:23-124

文档解析系统

文档解析系统使用特定格式的解析器从文档中提取原始文本内容,主要针对 PDF 文件。

解析器框架
Mayan EDMS · 解析器框架 · 图 5
Mayan EDMS · 解析器框架 · 图 5

来源:mayan/apps/document_parsing/parsers.py:20-184, mayan/apps/converter/literals.py:7-51

PDF 文本提取

PopplerParser 使用 pdftotext 工具提取文本内容:

Mayan EDMS · PDF 文本提取 · 图 6
Mayan EDMS · PDF 文本提取 · 图 6

来源:mayan/apps/document_parsing/parsers.py:112-163

文件元数据提取

文件元数据系统使用 ExifTool 等外部工具从文档文件中提取技术元数据。

元数据驱动架构
Mayan EDMS · 元数据驱动架构 · 图 7
Mayan EDMS · 元数据驱动架构 · 图 7

来源:mayan/apps/file_metadata/drivers/exiftool.py:18-74, mayan/apps/file_metadata/literals.py:1-14

处理管线集成

文档处理组件在由文档生命周期事件触发的协调管线中协同工作:

Mayan EDMS · 处理管线集成 · 图 8
Mayan EDMS · 处理管线集成 · 图 8

来源:mayan/apps/converter/settings.py:61-72, mayan/apps/ocr/settings.py:15-28, mayan/apps/ocr/apps.py:57-211

任务队列集成

文档处理操作使用 Celery 任务异步执行,以处理资源密集型操作:

Mayan EDMS · 任务队列集成 · 图 9
Mayan EDMS · 任务队列集成 · 图 9

来源:mayan/apps/converter/tasks.py:17-65, mayan/apps/file_metadata/tasks.py:17-49, mayan/apps/ocr/methods.py

配置与设置

文档处理系统提供了丰富的配置选项,用于自定义后端行为和外部工具集成:

设置类别关键设置用途
图形后端CONVERTER_GRAPHICS_BACKEND<br/>CONVERTER_GRAPHICS_BACKEND_ARGUMENTS图像转换引擎和参数
OCR 后端OCR_BACKEND<br/>OCR_BACKEND_ARGUMENTS文本提取引擎和配置
外部工具libreoffice_path<br/>tesseract_path<br/>pdftotext_path工具可执行文件位置
处理限制pillow_maximum_image_pixels<br/>tesseract_timeout资源和时间约束
自动处理OCR_AUTO_OCR<br/>auto_ocr 按文档类型自动处理触发器

来源:mayan/apps/converter/settings.py:20-96, mayan/apps/ocr/settings.py:10-29, mayan/apps/converter/literals.py:85-93