2013-06-19 17 views
9

Mam plik PDF wygenerowany przez stronę trzecią. Próbuję pobrać tekst, ale ani pdf2text, ani kopiowanie i wklejanie nie daje czytelnego tekstu. Po niewielkim wykopaniu wyjścia (jednego z dwóch) zauważyłem, że każdy znak na ekranie składa się z trzech bajtów. Na przykład "A" to bajty ef, i 81. Patrząc na metadane w pliku PDF, który twierdzi, że jest zakodowany w Tożsamości-H, zakładam, że to, co widzę, to zestaw znaków zakodowanych w Tożsamości-H. Mam częściowe mapowanie na podstawie dokumentów, które już posiadam, ale chcę utworzyć bardziej kompletne mapowanie. Aby to zrobić, potrzebuję czegoś w rodzaju tabeli ASCII dla Identity-H.Gdzie mogę odwzorować zakodowane znaki tożsamości-H na znaki ASCII lub Unicode?

+1

Nie jest to natychmiastowe rozwiązanie, ale spójrz na dokumenty CID (Identity-H) http://partners.adobe.com/public/developer/en/font/5092.CID_Overview.pdf i http: // www. adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5014.CIDFont_Spec.pdf – borrible

+1

Jeśli masz plik PDF z czcionką używającą tożsamości-h, musisz użyć mapy **/ToUnicode ** w pliku PDF do ekstrakcji tekstu. Cf. Sekcja 9.10.2 Odwzorowywanie kodów znaków na wartości Unicode w ISO 32000-1: 2008. – mkl

+0

Witam, sprawdź moje pytanie dotyczące tego http://stackoverflow.com/questions/22431215/read-japanese-characters-in-a-pdf-file/22489010#22489010 – TacB0sS

Odpowiedz

6

Nie zawsze jest możliwe wyodrębnienie tekstu z pliku PDF, szczególnie gdy brakuje mapy/ToUnicode wskazanej przez mkl.

Jeśli nie można wyciąć i wkleić poprawnego tekstu z programu Acrobat, wówczas istnieje niewielkie prawdopodobieństwo wyodrębnienia tekstu. Jeśli program Acrobat nie może go wyodrębnić, jest bardzo mało prawdopodobne, aby jakiekolwiek inne narzędzie mogło poprawnie wyodrębnić tekst.

Jeśli ręcznie utworzysz tabelę kodowania, możesz użyć jej do zamiany wyekstrahowanych znaków na ich prawidłowe wartości, ale najprawdopodobniej będzie to działało tylko dla tego jednego dokumentu.

Często robi się to celowo. Widziałem dokumenty, które losowo remapują znaki inaczej dla każdej czcionki w kropce. Jest używany jako forma zaciemniania i jedynym sposobem na wyodrębnienie tekstu z tych plików PDF jest użycie OCR. Istnieje wiele raportów finansowych, które wykorzystują tego rodzaju sztuczkę, aby powstrzymać ludzi przed wyodrębnianiem danych.

Ponadto Identity-H to po prostu odwzorowanie znaków 1: 1 dla wszystkich znaków od 0x0000 do 0xFFFF. to znaczy. Tożsamość to odwzorowanie tożsamości.

Twoim rzeczywistym problemem jest brakujący wpis/ToUnicode w tym pliku PDF. Podejrzewam, że w twoim pliku PDF znajduje się także zagnieżdżona CMap, która wyjaśnia, dlaczego mogą występować 3 bajty na znak.

+1

Więc, w zasadzie muszę zrobić to, co już mam done: sam utworzę mapowanie. Na szczęście wszystkie pliki PDF, które ta agencja produkuje, wykorzystują tę samą konfigurację, więc wątpię, by była ona zamierzona (lub jeśli jest, nie jest zbyt dobra w byciu niejasnym). –