簡體   English   中英

如何使PDF文本提取正常工作?

[英]How to get text extraction from PDF to work?

我需要從羅馬尼亞語的PDF中提取文本。 使用pdfBox或Snowtide無法正確提取符號:ȚțȘșĂăÎîâ。

這是一個無效的示例文件: ftp : //ftp.logos.md/Biblioteca/_Colectie_RO/2nefon.pdf

有什么建議么?

恐怕OP指向的PDF( 2nefon.pdf )沒有提供根據規范提取文本所需的信息。

嘗試從Adobe Reader復制和粘貼會導致特殊字符被錯誤地導出,並且Adobe Reader包含相當好的文本提取功能,因此這已經是一個不好的信號。

檢查文件將顯示問題。 例如,讓我們看一下標題

屏幕截圖2nefon.pdf

內容流的對應段為:

/F1 24 Tf
-148.44 -26.16 TD
(VIA}A  {I  ~NV|}|TURILE) Tj
296.88 0 TD
( ) Tj
-308.16 -29.28 TD
(SFANTULUI  IERARH  NIFON) Tj

讓我們檢查使用的字體F1

469 0 obj
<< 
/Type /Font 
/Subtype /TrueType 
/Name /F1 
/BaseFont /TimesR 
/FirstChar 32 
/LastChar 255 
/Widths [ 250 333 444 722 500 833 778 [...] 500 500 500 500 500 500 500 ] 
/Encoding /WinAnsiEncoding 
/FontDescriptor 468 0 R 
>> 
endobj 

因此,該字體聲稱使用WinAnsiEncoding而不進行任何更改(沒有Differences )。

最后看一下字體描述符:

468 0 obj
<< 
/Type /FontDescriptor 
/FontName /TimesR 
/Flags 34 
/FontBBox [ -167 -307 1009 913 ] 
/StemV 90 
/ItalicAngle 0 
/CapHeight 913 
/Ascent 913 
/Descent -307 
/FontFile2 474 0 R 
>> 
endobj

這里沒有暗示上述WinAnsiEncoding可能不是全部事實。

根據PDF規范ISO 32000-1

合格的讀者可以按照給定的優先級使用這些方法,將字符代碼映射到Unicode值。 特別是帶標簽的PDF文檔,應至少提供以下方法之一(請參見14.8.2.4.2,“帶標簽的PDF中的Unicode映射”):

  • 如果字體字典包含ToUnicode CMap(請參見9.10.3,“ ToUnicode CMaps”),請使用該CMap將字符代碼轉換為Unicode。

  • 如果字體是使用預定義編碼MacRomanEncodingMacExpertEncodingWinAnsiEncoding之一的簡單字體,或者其編碼格式Differences數組僅包含取自Adobe標准拉丁字符集的字符名稱和Symbol中的命名字符集,字體(請參閱附件D):

    a)根據表D.1和字體的Differences數組將字符代碼映射為字符名稱。

    b)在Adobe字形列表中查找字符名稱(請參見參考書目)以獲得相應的Unicode值。

  • 如果字體是復合字體[...縮寫,因為字體F1不是復合字體...]

如果這些方法無法產生Unicode值,則無法確定字符代碼代表什么,在這種情況下,合格的閱讀者可以選擇他們選擇的字符代碼。

(第9.10.2節將字符代碼映射到Unicode值)

因此,在報告文檔聲稱這兩行內容時,文本提取和復制粘貼將完全遵循規范:

VIA}A {I ~NV|}|TURILE
SFANTULUI IERARH NIFON

但是,您可能要檢查是否將Ă (帶有短音的大寫字母 A)始終導出為|。 ; 這實際上並非不可能,在上個世紀的一段時間中,將特殊字符映射到符號的字符代碼是很普遍的。 如果確實如此,提取文本后進行全局搜索並替換將為您提供所需的文本。

如何使用iText: http : //itextpdf.com/

“iText®是一個開放源代碼庫,可讓您創建和處理PDF文檔。它使開發人員希望通過動態PDF文檔生成和/或處理來增強Web應用程序和其他應用程序。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM