繁体   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