2016-12-02 41 views
2

我使用itextpdf提取PDF文本在我的Android應用程序中提取馬拉地語,印地文PDF文件中的文本。它是爲PDF具有英語工作正常,但是當我試圖從馬拉或印地文PDF中提取文本是不正確的提取文字。如何使用itextpdf android的

這是給結果作爲

matrabadha阿倫kalakani 愛慕拍拍jadhamani有adhana samuakaka ganuganuta ragoli後刪除saravanu。那我

請幫我在這,提取適當的內容

+0

究竟什麼是「正確的內容」對於那些誰不知道區別在哪裏? –

+0

的假名和matras通常給予單獨的代碼完全。它是用字母沿着然後寫入。您可能要檢查一次方向,如果有一個模式,你必須給他們改正的最後一個值。 – SanVed

+0

我只想說,這是不是給我正確的話在PDF中。 – Manoj

回答

4

如果你不是在Android上,答案會很容易:使用的iText 7.輸出出來多少解析文檔時,吸塵器的iText 7 ,它仍然不是100%正確,但至少它看起來大多是可讀的,我(雖然我需要爲母語的人確認)。這是第2頁:

maitrabadham阿倫kulakani
maitrabadham

阿倫kulakani

Ë材料prahisthana
Ë材料prahisthana

的結果是下一個頁面類似,有一些小的打嗝,但沒有在iText的5

畸變,

但是,是的,不幸的是你在Android上。目前由於還沒有Android版本的iText的7,所以你會堅持等待一個或嘗試手動端口iText的Android平臺(如果你不是十分熟悉Android和iText的這兩個可能會考慮半天) 。

這是我用iText的7碼:

// iText imports 
import com.itextpdf.kernel.pdf.PdfDocument; 
import com.itextpdf.kernel.pdf.PdfReader; 
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor; 
public class HindiText { 

    @Test 
    public void go() throws Exception { 
     try (PdfDocument doc = new PdfDocument(new PdfReader("input.pdf"))) { 
      try (OutputStream os = new FileOutputStream("output.txt")) { 
       String result = PdfTextExtractor.getTextFromPage(doc.getPage(3)); 
       os.write(result.getBytes(Charset.forName("UTF-16"))); 
      } 
     } 
    } 
} 

供參考:作爲2016年12月2日需要從源(https://github.com/itext/itext7)建立的iText 7達到予上述質量。它被釋放時,此功能將被包含在iText的7.0.2。

+0

哪種語言您使用了FO這一點,你可以分享你的代碼,這樣我就可以得到一些想法 – Manoj

+0

感謝您分享您的代碼,我會讓你知道,如果它正適合我。 – Manoj

+0

我曾嘗試你的代碼,但它給我相同的輸出以前,你能告訴我你的iText 7使用哪個jar文件,我曾用「com.itextpdf:內核:7.0.1」的依賴。 – Manoj

相關問題