Skip to main content

easypdf_markdown/
lib.rs

1//! 将 PDF 语义内容确定性转换为 Markdown。
2//!
3//! # 架构
4//!
5//! ```text
6//! PdfInput → PdfReader → PdfDocumentModel → ProcessorPipeline → MarkdownRenderer → String
7//! ```
8//!
9//! - [`PdfMarkdownProcessor`] trait 定义单个语义增强处理器
10//! - [`ProcessorPipeline`] 按优先级组合多个处理器
11//! - [`MarkdownRenderer`] 将模型渲染为 Markdown 字符串
12//! - [`MarkdownProfile`] 及 [`MarkdownProfileBuilder`] 配置输出格式与管道
13//!
14//! # 快速开始
15//!
16//! ```no_run
17//! use easypdf_markdown::{
18//!     MarkdownProfile, ProcessorPipeline, PdfMarkdownBuilder,
19//!     processors::{ReadingOrderProcessor, HeadingDetectorProcessor},
20//! };
21//!
22//! // 构建处理器管道
23//! let mut pipeline = ProcessorPipeline::new();
24//! pipeline.register(Box::new(ReadingOrderProcessor));
25//! pipeline.register(Box::new(HeadingDetectorProcessor::new()));
26//!
27//! // 或使用 Profile 预设
28//! let config = MarkdownProfile::balanced();
29//! ```
30
31#![deny(unsafe_code)]
32#![warn(missing_docs)]
33#![warn(clippy::pedantic)]
34
35mod image_policy;
36mod markdown_conversion_result;
37mod markdown_export_report;
38mod markdown_export_result;
39mod markdown_processor_capabilities;
40mod markdown_profile;
41mod markdown_renderer;
42mod markdown_warning;
43mod ocr_policy;
44mod pdf_markdown_builder;
45mod pdf_markdown_export_builder;
46mod pdf_markdown_processor;
47mod processor_capability;
48mod processor_pipeline;
49mod table_policy;
50
51/// 内置开箱即用的语义处理器。
52pub mod processors;
53
54/// PDF page rendering to raster images (merged from `easypdf-render`).
55pub mod render;
56
57/// Heuristic table detection (merged from `easypdf-markdown-table`).
58pub mod table;
59
60/// OCR processor for scanned PDF text extraction (merged from `easypdf-markdown-ocr`).
61pub mod ocr;
62
63pub use image_policy::ImagePolicy;
64pub use markdown_conversion_result::MarkdownConversionResult;
65pub use markdown_export_report::MarkdownExportReport;
66pub use markdown_export_result::MarkdownExportResult;
67pub use markdown_processor_capabilities::MarkdownProcessorCapabilities;
68pub use markdown_profile::{BuildPolicies, MarkdownProfile, MarkdownProfileBuilder};
69pub use markdown_renderer::MarkdownRenderer;
70pub use markdown_warning::MarkdownWarning;
71pub use ocr_policy::OcrPolicy;
72pub use pdf_markdown_builder::PdfMarkdownBuilder;
73pub use pdf_markdown_export_builder::PdfMarkdownExportBuilder;
74pub use pdf_markdown_processor::PdfMarkdownProcessor;
75pub use processor_capability::{DetailedProcessorCapabilities, ProcessorCapability};
76pub use processor_pipeline::{PRIORITY_GENERIC, PRIORITY_SPECIFIC, ProcessorPipeline};
77pub use table_policy::TablePolicy;
78
79// --- Flat re-exports from render submodule (backward compatibility) ---
80pub use render::{
81    Background, ImageFormat, PdfRenderer, RenderBackend, RenderConfig, RenderError, RenderedImage,
82};
83
84// --- Flat re-exports from table submodule (backward compatibility) ---
85pub use table::{ColumnSeparator, TableDetectionConfig, TableDetectorProcessor};
86
87// --- Flat re-exports from ocr submodule (backward compatibility) ---
88pub use ocr::{OcrConfig, OcrEngine, OcrImage, OcrProcessor, OcrResult, OcrTrigger, WordBox};