Java PDFTextStripper使用错误编码进行解析

Java PDFTextStripper使用错误编码进行解析,java,pdf,pdfbox,pdf-parsing,Java,Pdf,Pdfbox,Pdf Parsing,结果包含如下内容 PDFTextStripper stripper = new PDFText2HTML(encoding); String result = stripper.getText(document).trim(); Inserat 选择EE版本和#0&#... 而不是 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www

结果包含如下内容

PDFTextStripper stripper = new PDFText2HTML(encoding);
String result = stripper.getText(document).trim();
Inserat
选择EE版本和#0&#...
而不是

<!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;&#...
Inserat
选择EE版本any
无稽之谈的人物。。。
当我将编码更改为windows-1252或utf-8时,结果未更改。错误的pdf url

如何解析此pdf

如何解析

除了OCR,你没有

讨论中的PDF不包含提取文本所需的信息,而不进行至少一些OCR(至少对所用字体的每个字符进行OCR,以找到从字形到字符的映射),这将需要额外的库和代码

作为文本提取的一项要求,PDF规范在第9.10.2节中正确指出,用于提取文本的字体需要

  • 或者包含ToUnicodeCMap-文档中使用的字体不会-
  • 或者是使用表118中列出的预定义CMAP之一的复合字体(Identity–H和Identity–V除外),或者其子代CIDFont使用Adobe-GB1、Adobe-CNS1、Adobe-Japan1或Adobe-Korea1字符集-文档中使用的字体不是-
  • 或者是使用预定义编码之一的简单字体MacRomanEncoding, MacExpertEncoding,WinAnsienceCodeing,或其编码的差异数组仅包括取自Adobe标准拉丁字符集的字符名和符号字体中的命名字符集-文档中使用的字体既不使用这些预定义编码,也不使用其差异数组中的字符名提到的那些选择:使用的名称是/0/1,…,/155
一般来说,一个好的第一个测试是尝试使用Adobe Reader复制和粘贴文本,因为读者的代码中有很多文本提取经验。当你尝试这样做时,你会发现你只会得到垃圾

如何解析

除了OCR,你没有

讨论中的PDF不包含提取文本所需的信息,而不进行至少一些OCR(至少对所用字体的每个字符进行OCR,以找到从字形到字符的映射),这将需要额外的库和代码

作为文本提取的一项要求,PDF规范在第9.10.2节中正确指出,用于提取文本的字体需要

  • 或者包含ToUnicodeCMap-文档中使用的字体不会-
  • 或者是使用表118中列出的预定义CMAP之一的复合字体(Identity–H和Identity–V除外),或者其子代CIDFont使用Adobe-GB1、Adobe-CNS1、Adobe-Japan1或Adobe-Korea1字符集-文档中使用的字体不是-
  • 或者是使用预定义编码之一的简单字体MacRomanEncoding, MacExpertEncoding,WinAnsienceCodeing,或其编码的差异数组仅包括取自Adobe标准拉丁字符集的字符名和符号字体中的命名字符集-文档中使用的字体既不使用这些预定义编码,也不使用其差异数组中的字符名提到的那些选择:使用的名称是/0/1,…,/155
一般来说,一个好的第一个测试是尝试使用Adobe Reader复制和粘贴文本,因为读者的代码中有很多文本提取经验。当你尝试这样做时,你会发现你只会得到垃圾

 <!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...