簡體   English   中英

使用pdfbox從pdf中提取文本時出錯

[英]Error when extracting text from pdf using pdfbox

樣本pdf

樣本pdf是一份中文簡歷,3頁,使用下面的標准代碼

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

提取結果如下圖所示,只有一些單詞

提取結果

如果您運行文本提取代碼並啟用日志記錄,您將看到許多警告:

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。


順便說一句,一個好的第一次檢查通常是嘗試從Adobe Reader復制和粘貼文本。 在手頭的情況下,也導致大多數字符丟失。 這通常意味着缺少根據PDF規范提取文本所需的信息。

您還可以在評論中提供的@Tilman鏈接中找到更多背景: https ://pdfbox.apache.org/2.0/faq.html#text-extraction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM