doc-quad 0.1.1

A high-performance document detection library in pure Rust.
Documentation
## DocQuad 项目组织结构


```text
doc-quad/
├── Cargo.toml                # 项目元数据与依赖配置 (glam, fast-canny, ndarray, bytemuck, geo)
├── README.md                 # 项目愿景、技术栈说明及快速入门指南
├── ARCHITECTURE.md           # 详细设计文档:内存安全规范、算法流程、坐标系定义
├── .gitignore                # Git 忽略文件配置
├── src/                      # 源代码核心目录
│   ├── lib.rs                # 库入口点,定义公共 API (如 find_document) 及模块导出
│   ├── prelude.rs            # 预导入模块,导出常用的 Buffer、Point、Quadrilateral 等类型
│   ├── error.rs              # 统一错误处理:定义 DocQuadError 枚举(涵盖内存、几何、算法错误)
│   │
│   ├── core/                 # 核心抽象层:处理内存布局与零拷贝映射
│   │   ├── mod.rs            # 模块入口,定义核心数据结构抽象
│   │   ├── buffer.rs         # DocBuffer 定义:封装原始指针/切片,管理数据生命周期
│   │   └── view.rs           # ndarray 适配器:利用 bytemuck 将原始内存映射为带 Stride 的 ArrayView2
│   │
│   ├── edge/                 # 边缘检测算子层:图像到二值图的转换
│   │   ├── mod.rs            # 边缘检测流控制器
│   │   ├── detector.rs       # fast-canny 深度集成:处理从核心视图到 Canny 算子的数据适配
│   │   └── threshold.rs      # 自适应算法:实现基于直方图统计的高低阈值自动计算逻辑
│   │
│   ├── topology/             # 拓扑追踪层:像素点到几何轮廓的转换
│   │   ├── mod.rs            # 轮廓提取接口定义
│   │   ├── contour.rs        # Suzuki-Abe 算法实现:负责扫描边缘图并追踪闭合边界
│   │   └── chain.rs          # 链码与邻域逻辑:处理 8-邻域搜索与边界标记状态机
│   │
│   ├── geom/                 # 几何引擎层:基于数学模型进行分析与拟合
│   │   ├── mod.rs            # 几何筛选与排序主逻辑
│   │   ├── simplify.rs       # 多边形拟合:集成 geo 的 Douglas-Peucker 算法进行轮廓简化
│   │   ├── validate.rs       # 筛选器:执行凸性检测、内角校验及最大面积评分逻辑
│   │   └── transform.rs      # 空间变换:利用 glam 计算单应性矩阵,执行顶点重排 (TL, TR, BR, BL)
│   │
│   └── ffi/                  # 外部函数接口层 (可选)
│       ├── mod.rs            # 导出 C 兼容接口
│       └── android.rs        # 针对 Android JNI 的专用封装逻辑
│
├── tests/                    # 集成测试目录
│   ├── common/               # 测试工具类:包含模拟相机数据生成、断言辅助函数
│   ├── detection_test.rs     # 核心扫描逻辑端到端测试 (使用 image 0.25 读取测试样本)
│   └── stride_test.rs        # 专项测试:验证不同 row_stride 下的内存访问准确性
│
├── examples/                 # 示例代码
│   ├── pc_demo.rs            # PC 端调用示例:读取图片并输出四边形顶点坐标
│   └── stream_processing.rs  # 模拟流式处理示例:演示如何重用中间缓冲区
│
└── benches/                  # 性能基准测试
    ├── canny_bench.rs        # 评估不同分辨率下的边缘检测耗时
    └── contour_bench.rs      # 评估 Suzuki-Abe 算法在复杂边缘下的处理性能
```