gpt4 book ai didi

java - 使用pdfbox从pdf中提取文本时出错

转载 作者:行者123 更新时间:2023-11-29 04:11:50 25 4
gpt4 key购买 nike

sample pdf

样本pdf为中文简历,3页,使用标准代码如下

PDDocument document =  PDDocument.load(new File(path));
PDFTextStripper stripper = new PDFTextStripper();
text = stripper.getText(document);

提取结果如下图,只有一些词

extraction result

最佳答案

如果您运行文本提取代码并启用日志记录,您将看到许多警告:

Feb 12, 2019 5:45:58 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARN: No Unicode mapping for CID+5482 (5482) in font GNPVNR+PingFangSC-Semibold
Feb 12, 2019 5:45:58 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARN: No Unicode mapping for CID+1842 (1842) in font GNPVNR+PingFangSC-Semibold
Feb 12, 2019 5:45:58 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARN: No Unicode mapping for CID+7566 (7566) in font GNPVNR+PingFangSC-Semibold
Feb 12, 2019 5:45:58 PM org.apache.pdfbox.pdmodel.font.PDType0Font toUnicode
WARN: No Unicode mapping for CID+1915 (1915) in font GNPVNR+PingFangSC-Semibold
...

确实,当检查 PDF 时,会发现嵌入了 PingFangSC 样式的大量子集,但每次都是

  • 使用完全没有任何条目的 ToUnicode 映射,
  • 使用Identity-H编码,并且
  • 具有 Adobe-Identity-0 ROS

即没有任何信息表示哪个字形代表哪个 Unicode 代码点。因此,文本提取结果非常缺乏也就不足为奇了。

因此,如果您确实需要提取文本,请要求 PDF 来源提供包含所需信息的副本。如果那不可能,请尝试 OCR。


顺便说一下,一个好的初步检查通常是尝试从 Adob​​e Reader 复制和粘贴文本。在手头的情况下,这也会导致大部分字符丢失。这通常意味着缺少根据 PDF 规范提取文本所需的信息。

您还可以在评论中提供的@Tilman 链接中找到更多背景:https://pdfbox.apache.org/2.0/faq.html#text-extraction

关于java - 使用pdfbox从pdf中提取文本时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com