2010-11-28 130 views
5

Tengo que extraer texto de un documento PDF dentro de una región rectangular específica. El flujo de trabajo es el siguiente. En primer lugar, el pdf se convierte en una imagen jpg. Luego, el usuario dibuja el rectángulo de selección en la parte superior de la imagen. Entonces, de alguna manera, necesito extraer todo el texto del documento pdf dentro de esa región de selección. ¿Alguna sugerencia de qué freeware pdf libs puede acceder desde C# para usar?¿Cómo extraer texto de un documento PDF dentro de una región rectangular específica?

+0

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

+0

Posible duplicado de [Obtener ocurrencias de texto contenidas en un área específica con iTextSharp] (https://stackoverflow.com/questions/20606467/get-text-occurrences-contained-in-a-specified-area-with-itextsharp) – bfontaine

Respuesta

4

Acepto, OCR no es el enfoque para usar aquí. Necesita una biblioteca PDF que pueda extraer el texto junto con las coordenadas del cuadro delimitador.

QuickPDF es una biblioteca comercial (www.quickpdf.com) que puede extraer la información requerida por un precio muy razonable de $ 249. http://www.quickpdflibrary.com/help/quickpdf/DAExtractPageText.php es la función que está buscando. Esto extraerá el texto de toda la página y luego necesitará usar funciones simples de punto y/o rectángulo para limitar el texto al rectángulo seleccionado.

No creo que iText tenga esta capacidad basada en mi investigación.

También debería leer How to extract text from a PDF?

+0

gracias por su respuesta. – davidgale

1

Le sugiero una vez que haya rasterizado el PDF en una imagen JPEG para usar el reconocimiento de texto (OCR) para extraer el texto dentro de la región seleccionada. Aquí hay un article sobre una biblioteca de OCR para .NET. En lo que respecta a la extracción de texto de PDF, se refiere al here's an article, que ilustra cómo se puede lograr de forma más o menos confiable. El problema será cómo reconocer el texto dentro del rectángulo seleccionado por el usuario.

+0

this no es una opinión. Necesito el 100% de precisión. ocr no es 100% exacto. además de un único documento pdf puede contener texto en múltiples idiomas. Hasta donde yo sé, no hay librerías gratuitas que admitan el uso de más de un idioma a la vez. – davidgale

+0

@davidgale, dudo mucho que exista una solución gratuita para este tipo de problemas. Puede echarle un vistazo a la segunda opción y luego extraer texto de PDF y ver si funciona de manera confiable en su caso. Sin embargo, tendrá que averiguar sobre la región de selección que en mi humilde opinión no será una tarea fácil y no estoy al tanto de ninguna biblioteca de freeware capaz de hacer esto. –

1

(descargo de responsabilidad - Yo trabajo para Atalasoft en sus productos PDF) Atalasoft's PdfReader hará esto. No es freeware, pero funciona bastante bien. El código es el siguiente:

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

este código va a extraer los datos perfectamente pdf sobre la base de coordenadas rectangulares usando iTextSharp

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

¿En qué punto está usando 'linestringlist'? –

+0

¿De qué sirve 'linestringList' aquí? –

Cuestiones relacionadas