2013-06-19 26 views
9

我有一個由第三方生成的PDF。我試圖從文本中獲取文本,但都不會將文本複製並粘貼到可讀文本中。在輸出(兩者中的任何一個)後稍微挖掘一下,我發現屏幕上的每個字符都由三個字節組成。例如,「A」是字節ef,8181。看看它聲稱在Identity-H中編碼的PDF上的元數據,所以我認爲我所看到的是一組在Identity-H中編碼的字符。我有一個基於我已有的文檔的部分映射,但我想做一個更完整的映射。要做到這一點,我需要像Identity-H的ASCII表格。我在哪裏可以將Identity-H編碼字符映射爲ASCII或Unicode字符?

+1

不是一個直接的解決方案,但請看一下CID(Identity-H)文檔http://partners.adobe.com/public/developer/en/font/5092.CID_Overview.pdf和http:// www。 adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5014.CIDFont_Spec.pdf – borrible

+1

如果您使用identity-h使用帶有字體的PDF,則需要使用**/ToUnicode **地圖在PDF中進行文本提取。參看第9.10.2節將字符代碼映射到ISO 32000-1:2008的Unicode值。 – mkl

+0

嗨,看看我關於這個問題http://stackoverflow.com/questions/22431215/read-japanese-characters-in-a-pdf-file/22489010#22489010 – TacB0sS

回答

6

從PDF中提取文本並不總是可行的,特別是當mkl指出缺少/ ToUnicode映射時。

如果無法從Acrobat剪切並粘貼正確的文本,那麼您將很少有機會自行提取文本。如果Acrobat無法提取它,則任何其他工具都不可能正確提取文本。

如果您手動創建一個編碼表,那麼您可以使用它來將提取的字符重新映射到正確的值,但這很可能只適用於這一個文檔。

通常這是故意完成的。我已經看到文檔隨機重新映射點中每個字體的不同字符。它被用作混淆的一種形式,從這些PDF中提取文本的唯一真正方法是使用OCR。有許多財務報告使用這種技巧來阻止人們提取他們的數據。

另外,對於從0x0000到0xFFFF的所有字符,Identity-H只是1:1的字符映射。即。身份是身份映射。

你真正的問題是這個PDF中丟失/ ToUnicode條目。我懷疑你的PDF中也有一個嵌入式CMap,它解釋了爲什麼每個字符可能有3個字節。

+1

所以,基本上我必須做我已經有的東西完成:自己創建映射。幸運的是,該機構生產的所有PDF似乎都使用相同的設置,所以我懷疑這是故意的(或者如果是的話,他們不擅長晦澀難懂)。 –

相關問題