簡體   English   中英

PDFTextStripper解析錯誤的編碼

[英]PDFTextStripper parsing with wrong encoding

PDFTextStripper stripper = new PDFText2HTML(encoding);
String result = stripper.getText(document).trim();

結果包含類似

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Inserat
 SeLe EE rev</title> <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8"> </head> <body> <div
 style="page-break-before:always;
 page-break-after:always"><div><p>&#0;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#...

代替

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Inserat
 SeLe EE rev</title> <meta http-equiv="Content-Type"
 content="text/html; charset=utf-8"> </head> <body> <div
 style="page-break-before:always; page-break-after:always"><div><p>any
 blablabla characters...

當我將編碼更改為Windows-1252或utf-8時,結果未更改。 錯誤的pdf網址http://www.permaco.ch/fileadmin/user_upload/jobs/Inserat_SeLe_EE_rev.pdf

如何解析這個PDF文件?

如何解析這個PDF文件

缺少OCR,您不需要。

所討論的PDF不包含在不進行至少某些OCR(至少OCR對所使用字體的每個字符進行OCR查找從字形到字符的映射)的情況下提取文本所需的信息,這需要附加的庫和代碼。

作為文本提取的要求,PDF規范ISO 32000-1:2008在9.10.2節中正確規定,用於提取文本的字體需要

  • 包含ToUnicode CMap (文檔中使用的字體不包含)
  • 或者是使用表118中列出的預定義CMap之一(Identity–H和Identity–V除外)或其后代CIDFont使用Adobe-GB1,Adobe-CNS1,Adobe-Japan1或Adobe-Korea1字符集的復合字體。 -文檔中使用的字體不是-
  • 或者是使用預定義編碼MacRomanEncoding,MacExpertEncodingWinAnsiEncoding中的一種的簡單字體或者是其Differences數組僅包含取自Adobe標准拉丁字符集的字符名稱和Symbol字體中的命名字符集的編碼 -文檔中使用的字體既不使用這些預定義編碼之一,也不在其Differences數組中的字符名稱與所提到的那些選擇相同:使用的名稱為/ 0/ 1 ,..., / 155

通常,一個良好的第一個測試是嘗試使用Adobe Reader復制和粘貼文本,因為Reader的代碼中包含大量的文本提取經驗。 嘗試這樣做時,您會看到只得到垃圾。

暫無
暫無

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

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