2013-06-19 16 views
9

Ho un PDF generato da una terza parte. Sto cercando di ottenere il testo da esso, ma né lo pdf2text né la copia e l'incolla risultano in testo leggibile. Dopo aver scavato un po 'nell'output (di uno dei due) ho scoperto che ogni carattere sullo schermo è composto da tre byte. Ad esempio, "A" è i byte ef, 81 e 81. Osservando i metadati sul PDF che afferma di essere codificati in Identity-H, suppongo che quello che sto vedendo sia un insieme di caratteri codificati in Identity-H. Ho una mappatura parziale basata sui documenti che ho già, ma voglio fare una mappatura più completa. Per farlo ho bisogno di qualcosa come una tabella ASCII per Identity-H.Dove è possibile eseguire il mapping dei caratteri con codifica Identity-H in caratteri ASCII o Unicode?

+1

Non una soluzione immediata, ma date un'occhiata ai documenti CID (Identity-H) http://partners.adobe.com/public/developer/en/font/5092.CID_Overview.pdf e http: // www. adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5014.CIDFont_Spec.pdf – borrible

+1

Se si dispone di un PDF con un font che utilizza identity-h, è necessario utilizzare una mappa **/ToUnicode ** nel PDF per l'estrazione del testo. Cf. Sezione 9.10.2 Mappatura dei codici carattere ai valori Unicode di ISO 32000-1: 2008. – mkl

+0

Ciao, guarda la mia domanda su questo http://stackoverflow.com/questions/22431215/read-japanese-characters-in-a-pdf-file/22489010#22489010 – TacB0sS

risposta

6

Non è sempre possibile estrarre il testo da un PDF, specialmente quando la mappa/ToUnicode è mancante come sottolineato da mkl.

Se non è possibile tagliare e incollare il testo corretto da Acrobat, si avranno pochissime possibilità di estrarre il testo da soli. Se Acrobat non è in grado di estrarlo, è molto improbabile che qualsiasi altro strumento possa estrarre il testo correttamente.

Se si crea manualmente una tabella di codifica, è possibile utilizzarla per rimappare i caratteri estratti sui valori corretti, ma molto probabilmente funzionerà solo per questo documento.

Spesso questo è fatto apposta. Ho visto documenti che rimappano in modo casuale i caratteri in modo diverso per ogni carattere nel punto. È usato come una forma di offuscamento e l'unico vero modo per estrarre il testo da questi PDF è ricorrere all'OCR. Ci sono molti rapporti finanziari che usano questo tipo di trucco per impedire alle persone di estrarre i loro dati.

Inoltre, Identity-H è solo un mapping di caratteri 1: 1 per tutti i caratteri da 0x0000 a 0xFFFF. vale a dire. L'identità è una mappatura dell'identità.

Il tuo vero problema è la voce mancante/ToUnicode in questo PDF. Sospetto che nel tuo PDF ci sia anche una CMap incorporata che spiega perché potrebbero esserci 3 byte per carattere.

+1

Quindi, in pratica devo fare quello che ho già fatto: creare la mappatura da solo. Fortunatamente tutti i PDF prodotti da questa agenzia sembrano utilizzare la stessa configurazione, quindi dubito che sia intenzionale (o se lo è, non sono molto bravi a essere oscuri). –