【问题标题】:Unusual font when extracting text from PDF从 PDF 中提取文本时出现异常字体
【发布时间】:2020-10-27 05:34:23
【问题描述】:

我一直在尝试从 PDF 文件中提取文本,并且大多数文件似乎都可以正常工作。但是,一个特定的文档中的文本采用了这种不寻常的字体:in solid

我曾尝试使用 PHP 和 Python 进行提取,但两者都无法修复此字体。我尝试复制文本并尝试查看是否可以在文本编辑工具中修复它,但无法做太多。请注意,原始 PDF 文档看起来不错,但是当文本在文本编辑工具中复制和粘贴时,两者之间的差距字符开始出现。我完全不知道该怎么做。请提出一个解决方案来解决这个问题在 PHP/Python(最好是 PHP)中。

【问题讨论】:

  • 它不是一种不寻常的字体,而是一种名为 Fullwidth Latin 的不寻常的 unicode 块。来自维基百科的一般信息en.wikipedia.org/wiki/…。您可以使用unicodedata 模块获取更多信息。例如,unicodedata.name("i")

标签: python php pdf fonts character-encoding


【解决方案1】:

在 unicode 之前,某些字符编码允许您将日文/韩文/中文字符组合为两个半角字符或一个全角字符。在这种情况下,拉丁字符可以是全宽的,以便与其他字符均匀混合。你手上有全角拉丁字符,这就是奇怪的空格的原因。

您可以normalize 使用 NFKD 兼容性分解的字符串来获取常规拉丁语。这也会改变任何半角/全角日文/韩文/中文字符,嗯......我不确定,但我认为是由多代码点字符构建的字符。

>>> import unicodedata
>>> t="in solid"
>>> unicodedata.normalize("NFKC", t)
'in solid'

【讨论】:

  • 谢谢,这对我很有效!接受你的回答,其实是全角字符造成的。
猜你喜欢
  • 1970-01-01
  • 2016-01-29
  • 2011-08-05
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多