【问题标题】:Unable to copy exact hindi content from pdf无法从 pdf 复制准确的印地语内容
【发布时间】:2015-08-25 16:43:12
【问题描述】:

我无法从 pdf 文件中复制印地语内容。 当我尝试复制/粘贴该内容时,它会更改为不同的印地语字符。

例子-

原文-निर्वाचक

粘贴后-ननरररचक

它是这样显示的。

任何人都可以帮助我获得确切的印地语字符。

【问题讨论】:

  • 印地语字体通常嵌入了不正确的字形到 Unicode 映射。可能需要应用 OCR。
  • 如果没有看到显示此问题的实际 PDF 文档,就不可能以任何方式帮助您。
  • 您好@SavendraSingh 我在使用类似文档时遇到了完全相同的问题。我需要你的帮助。你能分享你是如何解决这个问题的。你是怎么看文件的??你的回复对我很有帮助..
  • 我用 OCR 解决了这个问题。我为卡纳塔克邦完成了选民数据提取。

标签: pdf hindi


【解决方案1】:

这个问题和this answer讨论的问题类似,sample document there的出现也让人想起document here

简而言之

您的文档本身提供的信息例如:标题行中的字形“निर्वाचक”代表文本“ननरररचक”。您应该向文档的来源询问字体信息不会误导的文档版本。如果这不可能,您应该使用 OCR。

详细说明

第一页的顶行是通过页面内容流中的以下操作生成的:

/9 239 Tf
( !"#$%&) Tj 

第一行选择大小为 239 的名为 9 的字体(页面开头的操作会缩小所有内容)。第二行导致打印字形。使用该字体的自定义编码在括号之间引用这些字形。

PDF 第一页上的字体 9 包含 ToUnicode 映射。这张地图特别是地图

<20> <20> <0928>
<21> <21> <0928>
<22> <22> <0930>
<23> <23> <0930>
<24> <24> <0930> 

即代码 0x20 (' ') 和 0x21 ('!') 都映射到 Unicode 代码点 0x0928 ('न') 和代码 0x22 ('"')、0x23 ('#') 和 0x24 ('$' ) 全部到 Unicode 代码点 0x0930 ('र')。

因此,( !"#$%&amp;) 的内容显示为“निर्वाचक”,完全正确(根据文档中的信息)被提取/复制并粘贴为“ननरररचक”。

【讨论】:

  • 我有超过 250 个相同类型的 pdf 文件,我无法提取给定的内容,而且 OCR 也无法正常工作,它错过了许多字符。
  • @mkl 你能解释一下,如何解决这个问题吗?我有你想提出的问题,但如何解决这个问题仍然不清楚
  • @proprius 请您解释一下,如何解决这个问题 - 在another answer 中,看起来每个 PDF 中实际上只有几个字体字典。一种解决方案是将这些字体的每个字形呈现给用户,然后用户将提供正确的 Unicode 字符。根据这些信息,我们可以为每个字体对象构建一个 ToUnicode 映射并替换原来的映射。
  • @proprius 如果您有许多文档,并且其中的字体是相同的少数实际完整字体的子集,您可以通过识别用户之前已经映射到 Unicode 的字形并重新- 使用他以前的输入。
  • @proprius 创建这个工具本身就是一个不平凡的项目,开发人员应该知道他在 PDF 内部和字体格式内部的方法。但是,如果您需要处理很多此类文件,那么这项工作可能会有所回报。
猜你喜欢
  • 1970-01-01
  • 2017-02-06
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
相关资源
最近更新 更多