的示例文檔顯示這樣的:
但是從使用Adobe Acrobat導致複製&膏:
4144144714614 6991-6991
的逆轉字符的順序乍一看可能已經佔到文本已在內容流中設置爲希伯來語的語言:
/P <</MCID 0/Lang (he-IL)>> BDC
但可能不適合多個字形錯誤地提取出來,例如原因兩年的數字1992
和1996
都被提取爲「6991」。
這樣做的真正的罪魁禍首是在這裏使用的ToUnicode表的字體:
2 beginbfchar
<0003> <0020>
<0010> <002D>
endbfchar
1 beginbfrange
<0014> <001A> [<0036> <0031> <0034> <0034> <0037> <0031> <0034>]
endbfrange
1 beginbfchar
<001C> <0039>
endbfchar
此表由文本提取到了Unicode代碼點的標誌符號標識符相關聯。該bfchar和bfrange節在這裏暗示的映射:
0003 -> 0020 " "
0010 -> 002D "-"
0014 -> 0036 "6"
0015 -> 0031 "1"
0016 -> 0034 "4"
0017 -> 0034 "4"
0018 -> 0037 "7"
0019 -> 0031 "1"
001A -> 0034 "4"
001C -> 0039 "9"
顯然,三個不同的字形映射到數字「4」和兩個不同的數字「1」。
在文本繪製操作與字形ID的渲染字形相比,雖然
[<0014001C001C0019>] TJ
[<0010>] TJ
[<0014001C001C0015>] TJ
[<0003>] TJ
[<00170019001A00170019001A001700180019001A>11<001400150016>] TJ
表應當有這樣映射:
0003 -> " "
0010 -> "-"
0014 -> "1"
0015 -> "2"
0016 -> "3"
0017 -> "4"
0018 -> "5"
0019 -> "6"
001A -> "7"
001C -> "9"
對我來說這看起來像工具建立了ToUnicode表不知道如何在PDF中繪製字形或如何排列明文數字。
最右邊的年份1996
的第一個字符串<0014001C001C0019>
中的字形從左到右排列。如果假定字符順序或明文中的字符順序是從右到左,則會得出0014
將映射爲「6」且0019
爲「1」的錯誤結論。對於上面引用的文本繪製操作中的所有字符串和尚未關聯的所有字形標識的所有字符串,總結錯誤地是這樣,將會得到如PDF中的ToUnicode表所示的錯誤映射。
因此,PDF本質上是躺在哪個字形表示哪個數字。爲了解決這個問題,生產者程序(或生成ToUnicode地圖的工具)必須修復。
來源
2014-12-03 11:18:59
mkl
很可能PDF不包含字形所代表的字符,甚至是錯誤的信息。如果你分享一個示例文件,我們可以檢查。 – mkl 2014-12-02 15:13:45
有錯誤的文檔示例:https://dl.dropboxusercontent.com/u/25681990/1992.pdf – shevayura 2014-12-03 09:07:09