我使用ITextSharp和列出的代码从pdf中提取文本。但我发现有些行给了我错误的结果:
还有一个例子:
经过调查,我发现pdf文件包含法语脚本mt-58fbba579ea99.ttf。
using (PdfReader reader = new PdfReader(pfile.path)){
StringBuilder text = new StringBuilder();
if (pagenum == 0)
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
string page = "";
page = PdfTextExtractor.GetTextFromPage(reader, i, new
iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy());
string stringOutput = page;
string[] lines = stringOutput.Split('\n');
allData.Add(lines);
output = lines;
}
}
}问题:
发布于 2017-04-24 09:11:28
所有英镑货币符号“no”的条目都是使用字体(分别命名为C2_和C2_2 )绘制的,没有PDF文本提取所需的信息,如PDF规范ISO 32000-1节9.10“文本内容的提取”:它们使用编码Identity-H (这并不意味着对Unicode的任何映射),也没有ToUnicode映射。
用于其他条目的字体要么使用有意义的编码(、T1_、和T1_1使用T1_),要么使用ToUnicode映射(C2_1)。
由于iText中的文本提取实质上遵循了第9.10节中的描述,iText无法提取这些As条目的实际文本,相反,它返回原始的字形代码,就像Adobe复制和粘贴一样。
通常,这意味着您必须求助于OCR,或者使用OCR作为一个整体提取所有文本,或者单独提取所讨论字体的字符,以便为这些字体构建ToUnicode表,然后提取如上所述的文本。
但是,在这种情况下,C2_和C2_2嵌入式字体程序本身包含将包含的符号映射到Unicode代码点的信息。因此,还可以利用这些字体程序中的信息构建ToUnicode表。可以使用字体库从字体程序中读取此类信息,该库可以处理真正类型的字体。
https://stackoverflow.com/questions/43564676
复制相似问题