首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IText夏普用法语脚本MT从pdf中提取文本

IText夏普用法语脚本MT从pdf中提取文本
EN

Stack Overflow用户
提问于 2017-04-22 21:11:51
回答 1查看 280关注 0票数 0

我使用ITextSharp和列出的代码从pdf中提取文本。但我发现有些行给了我错误的结果:

  1. 在excel中- "11 3 11“
  2. 在中- "11 \u 0085\u 0014\u0016\u001c 3 11“
  3. pdf - "11 11 139 3 11“

还有一个例子:

  1. 在excel中- "2 45 1“
  2. 在中- "2 \u 0085\u 0019\u0018\u001b 45 1“
  3. pdf - "2 45 658 45 1“

经过调查,我发现pdf文件包含法语脚本mt-58fbba579ea99.ttf。

代码语言:javascript
复制
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;
}
}
}

问题:

  1. 如何添加已加载的字体以提取策略?
  2. 是否可以创建映射,以便将\u 0085\u0014\u0016\u001c转换为£139?
  3. 也许我漏掉了编码的东西?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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表。可以使用字体库从字体程序中读取此类信息,该库可以处理真正类型的字体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43564676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档