文件内的文本中包含带数字的正方形

我遇到的一些文本文件中有小数字的正方形(代替某些字符)。 我无法在Ubuntu中复制和粘贴这些内容,但可以单独搜索和替换gedit每个字符(替换为我认为最匹配的内容),显然只有少数类型的square才可行。

几个正方形的一个例子

我会相信显示这些方块因为我缺少某些字体…我的目的是将其转换为ePub或PDF文件。

我的问题是:

  • 这是什么类型的编码? 为什么会发生这种情况?
  • 如果它缺少字体,我可以安装它们并解决问题(允许我将符号转换为PDF,例如使用Calibre )吗?
  • 是否有应用程序将我的文本文件转换为没有这些方块的文本文件,而是类似的字符替换它们? 例如,符号 在此处输入图像描述 几乎是一个y ,所以我希望这个函数替换每个实例 在此处输入图像描述y

这里有一个示例txt文件,它最初看起来像这样 (注意OCR之后的不准确)。

注意:我无法使用uni2asciiiconv (虽然我可能没有使用正确的[options]),所以请在发布解决方案之前检查给定的文件!

方框表示“未找到字形”; 框中的字符是代码点的hex表示,以unicode表示。

有两种可能性:字符编码是乱码,或者您使用的字体没有该字符的字形。 如果您真的想了解它,这是一个很棒的概述字符编码: http : //trochee.net/2011/05/character-encoding-tutorial/

奇怪的是, U + 001F和U + 001D真的只是美化的换行符。 OCR回归那些似乎很奇怪。

正方形(据我所知)总是出现在使用特殊排版字符的地方。 例如,在某些字体中将字母t ty为字母t后跟字母y在两个字母之间留下额外的不需要的空格。 出于这个原因,用于更高级排版的许多字体都有额外的字符,就像应该读作“ ty ancient ty a a tempe ……”的ty字符。 由于你没有这些额外的字符(你可能甚至无法解码它们,因为它们可能没有ascii / utf-8代码)你得到了正方形。

我对如何复制实际文本没有真正的想法(在这种情况下,将ty作为单独的字符),但是TeX,LaTeX和朋友们可能会提供帮助 – 他们不一定是字体专家,但他们都被排版……

这不是我认识的任何编码。 我的猜测是缺少的符号不代表书面字符,而是表示有关OCR过程的额外信息。

使用ASCII控制代码的灵活解释,0C可以表示分页符,0B可以是制表符或其他空格。 1D和1F应该是“用于标记数据结构字段的分隔符”,但是一眼就可以看出1F可以被认为是不明的

 $ hexdump -C -s 0xa0 myfile.txt | grep -C 1 " 1f " 00000250 6c 64 20 6f 66 20 61 6e 63 69 65 6e 74 20 62 65 |ld of ancient be| 00000260 61 75 1f 20 61 20 74 65 6d 70 65 72 61 74 65 2c |au. a temperate,| 00000270 20 68 75 6d 69 64 20 72 65 67 69 6f 6e 20 77 68 | humid region wh| 00000280 6f 73 65 20 0a 6d 69 73 1f 20 75 6e 64 75 6c 61 |ose .mis. undula| 00000290 74 69 6e 67 20 68 69 6c 6c 73 20 68 61 64 20 62 |ting hills had b| -- 00000350 20 33 30 30 20 0a 73 70 65 63 69 65 73 20 6f 66 | 300 .species of| 00000360 20 74 72 65 65 73 20 67 72 65 1f 20 69 6e 63 6c | trees gre. incl| 00000370 75 64 69 6e 67 20 6d 61 70 6c 65 73 2c 20 63 61 |uding maples, ca| -- 000006a0 65 20 61 62 6f 75 74 20 31 30 20 6b 69 6c 6f 6d |e about 10 kilom| 000006b0 65 74 72 65 73 20 61 77 61 1f 20 62 65 79 6f 6e |etres awa. beyon| 000006c0 64 20 61 20 70 61 73 73 20 0a 63 61 6c 6c 65 64 |da pass .called| 

在这个例子中,字节1F被简并地用来代替ty,w, ,和y,

另一种可能性是在过去的一些编码转换过程中文件被损坏了。 也许丢弃了指定符号字体的元数据,或者将更有意义的超出范围的字符折叠为ASCII。 这与最初是罕见连字的字符一致。

在任何情况下,以编程方式翻译它所需的信息肯定不包含在文件中。 除非你能重新运行OCR,否则我认为你运气不好。