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

如何配置PDFBox/Tika忽略字体信息仅提取文本?

解决Tika 1.28.1解析PDF时字体内存占用过高导致OOM的问题

核心配置:禁用字体加载

你需要通过PDFParserConfig的setDisableFontLoading(true)配置来完全禁止加载字体信息到内存,这个配置是控制底层PDFBox是否加载字体数据的关键——setExtractFontNames()仅控制是否输出字体名称,无法阻止字体数据被加载到内存。

代码示例:

// 初始化PDF解析配置
PDFParserConfig pdfConfig = new PDFParserConfig();
// 禁用字体加载,彻底避免字体数据占用内存
pdfConfig.setDisableFontLoading(true);
// 关闭字体名称提取(如果不需要相关输出)
pdfConfig.setExtractFontNames(false);
// 禁用图片提取(仅需文本时可开启,进一步降低内存)
pdfConfig.setExtractImages(false);

// 配置解析器
AutoDetectParser parser = new AutoDetectParser();
parser.setPDFParserConfig(pdfConfig);

// 后续使用该parser执行文本提取流程

其他降低内存占用的建议

  • 使用流式解析:采用Tika的流式解析模式(ParsingReader),逐段处理文档内容,避免一次性将整个PDF加载到内存中。
  • 配置PDFBox内存策略:通过PDFParserConfig.setMemoryUsageSetting(MemoryUsageSetting.setupTempFileOnly()),让PDFBox使用临时文件存储中间数据,减少堆内存占用。
  • 关闭不必要的提取项:禁用注释、元数据等非必要内容的提取,比如设置pdfConfig.setExtractComments(false)、pdfConfig.setExtractMetadata(false)(如果索引不需要元数据)。
  • 拆分大文档:对于超大PDF,先拆分为多个小文档分段解析,处理完成后及时释放内存。
  • 优化JVM参数:临时增大堆内存(如-Xmx8g)作为应急方案,但优先通过解析配置优化内存使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:05:04