web-dev-qa-db-fra.com

Le texte à l'intérieur des fichiers a des carrés avec des nombres

Certains fichiers texte que je rencontre ont des petits carrés avec des nombres (à la place de certains caractères). Je ne parviens pas à les copier-coller dans Ubuntu, mais je peux rechercher et remplacer dans gedit chaque caractère individuellement (remplacer ce que je pense être la meilleure correspondance), ce n'est évidemment possible que s'il existe quelques types de carré.

An example of several of the squares

Je suis amené à croire que ces carrés sont affichés car il me manque certaines polices ... Mon but est de convertir ceci en un fichier ePub ou PDF.

Ma question est:

  • De quel type de codage s'agit-il? Et pourquoi cela se produit-il?
  • S'il manque des polices, puis-je les installer et cela résoudra-t-il le problème (permettez-moi de convertir des symboles en PDF, par exemple en utilisant Calibre)?
  • Existe-t-il une application permettant de convertir mon fichier texte en fichier texte sans ces carrés, au lieu de les remplacer par un caractère similaire? Par exemple, le symbole enter image description here est à peu près un y, donc je voudrais que cette fonction remplace chaque instance de enter image description here avec un y.

Un exemple de fichier txt est ici et il ressemblait à l'origine comme ceci (les inexactitudes de note suivies OCR).

Remarque: je ne pouvais pas faire fonctionner ni uni2ascii ni iconv (bien que je n’aie peut-être pas utilisé les bonnes [options]), veuillez donc vérifier le fichier avant de publier une solution!

5
hayd

Les cases signifient "glyphe non trouvé"; les caractères dans la boîte sont des représentations hexadécimales du point de code, en unicode.

Il y a deux possibilités: le codage des caractères est déformé ou la police que vous utilisez ne contient pas de glyphe pour ce caractère. C’est un excellent encodage de caractère si vous voulez vraiment le comprendre: http://trochee.net/2011/05/character-encoding-tutorial/

Curieusement, + 001F et + 001D ne sont que des sauts de ligne glorifiés. Il semble étrange que l'OCR les renvoie.

2
Amanda

Les carrés (à ce que je sache) se produisent toujours à des endroits où des caractères spéciaux ont été utilisés pour la composition. Par exemple, si vous composez ty comme la lettre t suivie de la lettre y dans certaines polices, vous laissez un espace supplémentaire non souhaité entre les deux lettres. Pour cette raison, de nombreuses polices utilisées pour la composition plus évoluée ont des caractères supplémentaires, comme le caractère ty qui devrait se lire "... ancient beauty a temperate ... ". Puisque vous n'avez pas ces caractères supplémentaires (il est possible que vous ne puissiez même pas les décoder, car ils pourraient ne pas avoir de code ascii/utf-8), vous obtenez des carrés.

Je n'ai aucune idée réelle sur la façon de copier le texte lui-même (et dans ce cas, obtenez une t et une y en tant que caractères séparés), mais les personnes présentes sur TeX, LaTeX et leurs amis pourrait peut-être vous aider - ils ne sont pas nécessairement des experts en polices de caractères, mais ils font tous partie de la composition ...

1
Tomas Aschan

Ce n'est pas un encodage que je reconnaisse. J'imagine que les symboles manquants ne représentent pas des caractères écrits, mais indiquent plutôt des informations supplémentaires sur le processus de ROC.

En utilisant une interprétation flexible de codes de contrôle ASCII , 0C pourrait représenter un saut de page et 0B pourrait être un onglet ou un autre espace. 1D et 1F sont supposés être des "délimiteurs pour marquer des champs de structures de données", mais en un coup d'œil, 1F aurait pu être coopté pour signifier non identifié :

$ 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  |d a pass .called|

Dans cet exemple, l'octet 1F est utilisé de manière dégénérée à la place de ty,, w, et y,.

Une autre possibilité est que le fichier ait été endommagé au cours d'une conversion de codage passée. Peut-être que les métadonnées spécifiant les polices de symboles ont été ignorées ou que des caractères plus significatifs, hors de portée, ont été réduits en ASCII. Cela concorderait avec le fait que les caractères étaient à l’origine des ligatures rares.

Dans tous les cas, les informations nécessaires à la traduction par programme ne sont certainement pas incluses dans le fichier. À moins que vous ne puissiez réexécuter l'OCR, je pense que vous n'avez pas de chance.

0
ændrük