样本pdf是中文简历,共3页,使用下面的标准代码
PDDocument document = PDDocument.load(new File(path));
PDFTextStripper stripper = new PDFTextStripper();
text = stripper.getText(document);
提取结果如下图所示,只有几个词
答案 0 :(得分:3)
如果运行文本提取代码并启用日志记录,则会看到许多警告:
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样式子集,但是每次都
即没有任何信息,哪个字形代表哪个Unicode代码点。因此,完全没有文本提取结果就不足为奇了。
因此,如果您确实需要提取文本,请询问PDF的提供者以提供包含所需信息的副本。如果那不可能,请尝试OCR。
顺便说一句,一个好的第一步检查通常是尝试从Adobe Reader复制和粘贴文本。在当前情况下,这也导致大多数字符丢失。这通常意味着缺少根据PDF规范提取文本所需的信息。
您还将在评论中提供的@Tilman链接中找到更多背景:https://pdfbox.apache.org/2.0/faq.html#text-extraction