2010-11-28 16 views
5

Belirli bir dikdörtgen bölgedeki bir pdf dokümanı metinden ayıklamak zorundayım. İş akışı aşağıdaki gibidir. Öncelikle pdf bir jpg görüntüsüne dönüştürülür. Daha sonra kullanıcı, resmin üstündeki seçim dikdörtgenini çizer. O zaman bir şekilde pdf belgesindeki tüm metni bu seçim bölgesinden almam gerekiyor. Ücretsiz pdf libs C# kullanmak için erişilebilir ne önerileri?Belirli bir dikdörtgen bölge içindeki bir pdf dokümanıyla metin nasıl alınır?

+0

https://stackoverflow.com/q/20606467/1271037 – dovid

+0

Olası çoğaltması [iTextSharp ile belirtilen bir alanda bulunan metin oluşumları] (https://stackoverflow.com/questions/20606467/get-text-occurrences-contained-in-a-specified-area-with-itextsharp) – bfontaine

cevap

4

Katılıyorum, OCR burada kullanım yaklaşımı değildir. Sınırlayıcı kutu koordinatları ile birlikte metni çıkarabilen bir PDF kitaplığına ihtiyacınız var.

QuickPDF, gerekli bilgileri 249 $ 'lık bir fiyat karşılığında alabilen ticari bir kütüphanedir (www.quickpdf.com). http://www.quickpdflibrary.com/help/quickpdf/DAExtractPageText.php, aradığınız işlevdir. Bu, tüm sayfa için metni ayıklar ve sonra metni seçtiğiniz dikdörtgenle sınırlamak için basit Nokta ve/veya Dikdörtgen işlevlerini kullanmanız gerekir.

iText'in bu araştırmaya dayanarak sahip olabileceğine inanmıyorum.

Ayrıca How to extract text from a PDF?

+0

teşekkürler. – davidgale

1

Seçilen bölgedeki metni ayıklamak için PDF'yi bir JPEG görüntüsüne rasterleştirdiğinizde metin tanıma (OCR) kullanmanız önerilir. İşte .NET için bir OCR kitaplığı hakkında bir article. PDF'den metin ayıklamak için, bunun daha fazla veya daha az güvenilir bir şekilde nasıl elde edileceğini gösteren here's an article söz konusudur. Sorun, seçilen dikdörtgen içindeki metni kullanıcı tarafından nasıl tanıyacağınızdır.

+0

this bir seçenek değil. % 100 doğruluğa ihtiyacım var. ocr% 100 doğru değildir. Tek bir PDF belgesinin yanı sıra birden çok dilde metin içerebilir. Bildiğim kadarıyla, bir seferde birden fazla dili okuyup desteklemeyen özgür ocr lib'leri yoktur. – davidgale

+0

@davidgale, Bu tür problemler için özgür bir çözümün varlığından şüphe duyuyorum. İkinci seçeneğe sonra PDF'den metin çıkarma ve durumunuzda yeterince güvenilir olup olmadığına bakın. Yine de, IMHO'nun kolay bir iş olmayacağı seçim bölgesini anlamanız gerekecek ve bunu yapabilecek herhangi bir ücretsiz kütüphanenin farkında değilim. Cevabınız için –

1

(yasal uyarı - Ben onun PDF ürünlerinde Atalasoft için çalışmak) okumalısınız Atalasoft's PdfReader yapacağız. Ücretsiz değil, ama gayet iyi çalışıyor. Kod şöyle görünür:

using (PdfTextDocument doc = new PdfTextDocument(pathToFile)) { 
    PdfTextPage page = doc.GetPage(pageNumber); 
    string text = page.GetTextInBox(yourSelection); 
} 
6

mükemmel itextsharp kullanarak dikdörtgen koordinatlar temelinde pdf veri ayıklamak olacak bu kod

List<string> linestringlist = new List<string>(); 
    PdfReader reader = new PdfReader(pdfFilename); 
    iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(coordinate1, coordinate2, coordinate3, coordinate4); 
    RenderFilter[] renderFilter = new RenderFilter[1]; 
    renderFilter[0] = new RegionTextRenderFilter(rect); 
    ITextExtractionStrategy textExtractionStrategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderFilter); 
    string text = PdfTextExtractor.GetTextFromPage(reader, 1, textExtractionStrategy); 
+2

Hangi noktada 'linestringlist' kullanıyorsunuz? –

+0

Burada 'linestringList' kullanımı nedir? –

İlgili konular