You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust新手使用lopdf读取PDF仅获纯字符的技术咨询

Rust PDF文本提取问题

我是Rust新手,尝试使用lopdf库读取PDF文件。测试多个示例后,仅能获取纯字符,需要保留空格、制表符、换行符等格式以便进行正则处理。请问是否有更合适的替代库?当前示例代码是否存在遗漏?另外,该库是否支持设置(x,y)坐标(我习惯使用pdfplumber)?

测试代码

fn main() {
    let file = "test2.pdf";
    let doc = Document::load(file);
    match doc {
        Ok(document) => {
            let text = document.extract_text(&[1]);
            println!("{:?}", text);
        }
        Err(err) => {
            eprintln!("{err}")
        }
    }
}

输出结果

DATEACCOUNTTYPETRANSACTIONQUANTITYDESCRIPTIONPRICEVALUETRANSFERDELAWAREHEALTHCAREFD09/09Cash7,395.8230029.0700214,996.57SHSINSTITUTIONALCLASSFROM:****8740-1JACOBDREWES&TRANSFERFEDERATEDHERMES09/09Cash38,561.179005.6600218,256.27STRATEGICVALUEDIVFUNDCLISFROM:****8740-1JACOBDREWES&TRANSFERFIDELITYADVISORS09/09Cash24,241.2660013.5800329,196.39REALESTATEINCOMECLASSIFROM:****8740-1JACOBDREWES&TRANSFERISHARESUSETFTRETF09/09Cash16,622.0000050.1300833,260.86BLACKROCKSHORTMATURITYBDFROM:****8740-1JACOBDREWES&TRANSFERISHARESNATIONALETF09/09Cash7,125.00000116.9300833,126.25MUNIBONDFROM:****8740-1JACOBDREWES&TRANSFERISHARESSHORTTERMETF09/09Cash7,729.00000107.8000833,186.20NATIONALMUNIBONDFROM:****8740-1JACOBDREWES&TRANSFERCOLUMBIASTRATEGIC09/09Cash

问题解答

1. 当前lopdf代码的问题

你使用的document.extract_text()方法本身设计目标就是提取无格式纯文本,会自动忽略所有空格、换行和布局信息,所以输出是挤在一起的字符串。代码本身没有遗漏,只是方法的功能不符合你的需求。

2. 替代库推荐

如果需要保留原PDF的布局格式(空格、换行等),推荐以下几个Rust库:

  • poppler-rs:基于成熟的Poppler PDF处理工具,能提取接近原文档布局的文本,自动保留换行、空格和段落结构,非常适合正则处理。
  • pdf-extract:专门针对带格式的文本提取,支持按页面提取保留布局的文本,API使用简单。
  • pdf-text:可配置提取选项,控制是否保留空格和换行,能满足基础的格式保留需求。

3. lopdf对(x,y)坐标的支持

lopdf支持获取文本的(x,y)坐标,但无法像pdfplumber那样直接按坐标提取,需要手动解析页面内容流:

  • 需遍历页面的操作对象,解析每个文本片段的位置信息(通过Content对象的操作指令)。
  • 根据文本元素的y坐标变化判断换行(y值差超过阈值则换行),x坐标间隔判断是否添加空格,自行拼接带格式的文本。
  • 核心思路:获取页面Content,遍历其中的Operation,筛选Tj/TJ(文本绘制)指令,提取文本及对应位置参数,再根据坐标排版。

内容的提问来源于stack exchange,提问作者diogenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:43:24