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

PDFBox 2.0.26无法正确提取Linearized PDF文本,求解决方案

线性化PDF文本提取解决方案

针对你使用org.apache.pdfbox.text.PDFTextStripper 2.0.26版本无法正确提取线性化PDF文本的问题,可通过以下方式解决:

基于PDFBox的解决办法

  • 升级PDFBox版本:2.0.26属于旧版本,后续的2.0.x更新版及3.x系列修复了大量线性化PDF的解析缺陷。建议升级至最新稳定版,再使用PDFTextStripper提取文本,大部分场景下可直接解决问题。
  • 预处理转换PDF结构:若暂时无法升级版本,可先将线性化PDF转换为普通结构。使用PDFBox的PDFMergerUtility合并单个PDF(实质是重新生成非线性化PDF),代码示例:
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.File;
import java.io.FileOutputStream;

public class LinearizedPdfConverter {
    public static void main(String[] args) throws Exception {
        PDFMergerUtility merger = new PDFMergerUtility();
        merger.addSource(new File("你的线性化PDF路径"));
        merger.setDestinationStream(new FileOutputStream("转换后的PDF路径"));
        merger.mergeDocuments(null);
    }
}

转换完成后再用PDFTextStripper处理即可。

其他替代工具

  • Apache Tika:基于PDFBox等库封装,对各类PDF兼容性更强,直接调用其文本提取接口就能处理线性化PDF,代码示例:
import org.apache.tika.Tika;
import java.io.File;

public class TikaTextExtractor {
    public static void main(String[] args) throws Exception {
        Tika tika = new Tika();
        String text = tika.parseToString(new File("你的线性化PDF路径"));
        System.out.println(text);
    }
}
  • PyMuPDF(fitz):Python生态中对线性化PDF支持优异的工具,提取代码简洁直观:
import fitz

doc = fitz.open("你的线性化PDF路径")
extracted_text = ""
for page in doc:
    extracted_text += page.get_text()
print(extracted_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:35:30