docparser-pdf 0.1.0

docparser PDF 后端:PDFium 常驻 worker 逐文本对象抽取(CJK/CID 可用)+ pdf-extract 纯 Rust 兜底
Documentation
# docparser-pdf


PDF 后端:**PDFium 常驻 worker**(一条线程独占 native 状态,通道收发)逐文本对象抽取
`text + bbox`,支持 CJK/CID 字体;`pdf-extract`(纯 Rust)作为兜底后端。

## 安装


```bash
cargo add docparser-pdf   # 或 cargo add docparser-sdk(含 core + office)
```

## 运行时依赖(重要)


PDFium 是**运行时**动态库,不由本 crate 打包。查找顺序:

1. `DOCPARSER_PDFIUM_LIB` 显式指定(推荐,发布环境务必显式设置);
2. `<exe>/../lib/{libpdfium.so|libpdfium.dylib|pdfium.dll}`(自包含发布布局);
3. 开发机常见位置(pypdfium2 / liteparse 附带库)。

```rust
use docparser_core::{DocumentEngine, Registry};

let mut reg = Registry::new();
docparser_core::plugins::text::register_defaults(&mut reg);
docparser_pdf::register_defaults(&mut reg);
let doc = DocumentEngine::new(reg).parse("report.pdf")?;
```

`docparser_pdf::find_library()` / `find_ocr_binary()` / `find_ocr_models()` 可直接用于自检:

```rust
println!("{:?}", docparser_pdf::find_library());
```

## 扫描件与嵌入图 OCR


- 纯文本层可用即不触发 OCR;稀疏/乱码页才路由到 OCR(`BackendPolicy.enable_ocr`)。
- OCR 走外部可执行文件 `docparser-ocr`(`DOCPARSER_OCR_BIN`)+ 模型目录(`DOCPARSER_OCR_MODELS`),
  缺失时降级为纯文本,不报错。
- 嵌入图文字默认关闭,`DOCPARSER_OCR_IMAGES=1` 开启。

## 后端与错误


| 后端 id | 形态 | 说明 |
| --- | --- | --- |
| `pdfium-worker` | bundled | 逐文本对象 + CJK CMap |
| `pdfium-text-v1` | bundled | `pdf-extract` 兜底 |

`encrypted` / `unsupported` 为终止码,不回退;其余错误按策略链继续尝试。

## 许可


MIT OR Apache-2.0