O texto dentro dos arquivos possui quadrados com números

5

Alguns arquivos de texto que eu encontro, têm pequenos quadrados com números (no lugar de certos caracteres). Eu sou incapaz de copiar e colar estes no Ubuntu, mas pode procurar e substituir em gedit cada caractere individualmente (substituindo o que eu acho que é o melhor jogo), obviamente isso só é viável se houver apenas alguns tipos de quadrados.

Sou levado a acreditar que esses quadrados são exibidos porque estou perdendo certas fontes ... Meu objetivo é converter isso em um arquivo ePub ou PDF.

Minha pergunta é:

  • Que tipo de codificação é essa? E por que isso acontece?
  • Se estiver faltando fontes, posso instalá-las e isso resolverá o problema (permite-me converter símbolos em PDF, por exemplo, usando Calibre )?
  • Existe um aplicativo para converter meu arquivo de texto em um arquivo de texto sem esses quadrados, em vez substituindo eles por um caractere semelhante? Por exemplo, o símbolo é praticamente um y , então gostaria que essa função substituísse cada instância de com y .

Um exemplo de arquivo txt é aqui e originalmente parecia assim (observe as imprecisões seguidas em OCR ).

Observação: eu não consegui nem o uni2ascii ou o iconv funcionar (embora eu possa não estar usando as [opções] corretas), portanto, verifique com o arquivo fornecido antes de postar uma solução!

    
por hayd 06.06.2011 / 23:17

3 respostas

2

As caixas significam "glifo não encontrado"; os caracteres na caixa são representações hexadecimais do ponto de código, em unicode.

Existem duas possibilidades: a codificação de caracteres é ilegível ou a fonte que você está usando não tem um glifo para esse caractere. Esta é uma ótima codificação de caracteres de visão geral se você realmente quiser entendê-la: link

Curiosamente, U + 001F e U+001D são realmente apenas linhas de quebra glorificadas. Parece estranho que o OCR os devolva.

    
por Amanda 07.06.2011 / 01:18
1

Os quadrados (tanto quanto eu posso dizer) sempre ocorrem em lugares onde caracteres tipográficos especiais foram usados. Por exemplo, a formatação de ty como a letra t seguida pela letra y em algumas fontes deixa um espaço extra indesejado entre as duas letras. Por essa razão, muitas fontes usadas para composição mais avançada têm caracteres extras para isso, como o caractere ty que deve ler "... antigo beau ty a temperado ...". Como você não tem esses caracteres extras (é possível que você não consiga decodificá-los, pois eles podem não ter um código ascii / utf-8), você obtém quadrados.

Não tenho uma ideia real sobre como copiar o texto real (e, neste caso, obter um t e um y como caracteres separados), mas as pessoas em TeX, LaTeX e amigos podem ser capazes de ajudar - eles não são necessariamente especialistas em fontes, mas eles estão todos compondo ...

    
por Tomas Lycken 07.06.2011 / 01:15
0

Não é nenhuma codificação que reconheço. Meu palpite é que os símbolos ausentes não representam caracteres escritos, mas indicam informações extras sobre o processo de OCR.

Usando uma interpretação flexível de códigos de controle ASCII , 0C pode representar uma quebra de página e 0B poderia ser um separador ou outro espaço em branco. 1D e 1F devem ser "delimitadores para marcar campos de estruturas de dados", mas de relance 1F poderia concebivelmente ter sido cooptado para significar não identificado :

$ 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|

Nesta amostra, o byte 1F está sendo usado degeneradamente no lugar de ty, , w, e y, .

Outra possibilidade é que o arquivo foi danificado durante alguma conversão de codificação passada. Talvez os metadados que especificam fontes de símbolos tenham sido descartados ou os caracteres fora de alcance mais significativos tenham sido reduzidos ao ASCII. Isso seria consistente com os caracteres originalmente sendo ligaduras raras.

Em qualquer caso, as informações necessárias para traduzi-lo programaticamente certamente não estão incluídas no arquivo. A menos que você possa executar novamente o OCR, acho que você está sem sorte.

    
por ændrük 07.06.2011 / 00:06