التعرف برمجيًا على النص من عمليات المسح في ملف PDF [مغلق]

StackOverflow https://stackoverflow.com/questions/158479

  •  03-07-2019
  •  | 
  •  

سؤال

لدي ملف PDF يحتوي على البيانات التي نحتاج إلى استيرادها إلى قاعدة البيانات.يبدو أن الملفات عبارة عن عمليات مسح بتنسيق pdf لنص أبجدي رقمي مطبوع.يبدو وكأنه 10 نقطة.تايمز نيو رومان.

هل هناك أي أدوات أو مكونات يمكن أن تسمح لي بالتعرف على هذا النص وتحليله؟

هل كانت مفيدة؟

المحلول

ولقد استعملت pdftohtml لتجريد بنجاح الجداول من PDF إلى CSV. أنها تقوم على Xpdf ، الذي هو أداة الغرض أعم، يتضمن <أ href = ل "http://en.wikipedia.org/wiki/Pdftotext" يختلط = "noreferrer"> pdftotext . أنا مجرد التفاف على أنها دعوة Process.Start من C #.

إذا كنت تبحث عن شيء أكثر DIY قليلا، وهناك من iTextSharp مكتبة - ميناء جافا iText - و<لأ href = "http://www.pdfbox.org/" يختلط = "noreferrer"> PDFBox (نعم، تقول جافا - ولكن لديهم نسخة. NET عن طريق IKVM.NET ). وفيما يلي بعض المقالات CodeProject على استخدام iTextSharp و <لأ href = "HTTP: // www.codeproject.com/KB/string/pdf2text.aspx "يختلط =" noreferrer "> PDFBox من C #.

وإذا كنت حقا مازوشي، هل يمكن أن يدعو إلى أدوبي <لأ href = "http://www.adobe.com/support/downloads/detail.jsp؟ftpID= 2611 "يختلط =" noreferrer "> PDF يفيلتر مع إمكانية التشغيل المتداخل COM. و يفيلتر المواصفات عبارة بسيطة جدا، ولكن اعتقد ان هذا الحمل إمكانية التشغيل المتداخل لن تكون كبيرة.

وتحرير: بعد إعادة قراءة السؤال والأجوبة اللاحقة، أصبح من الواضح أن OP يتعامل مع صور في كتابه PDF. في هذه الحالة، ستحتاج إلى استخراج الصور (المكتبات PDF أعلاه هي قادرة على القيام بذلك بسهولة إلى حد ما) وتشغيله من خلال محرك OCR.

ولقد استعملت MODI تفاعلي من قبل، مع نتائج لائقة. انها COM، لذلك استدعاء من C # عن طريق إمكانية التشغيل المتداخل هو أيضا قابلة للتنفيذ وجميلة <ل أ href = "http://msdn.microsoft.com/en-us/library/aa167607.aspx" يختلط = "noreferrer"> بسيطة :

' lifted from http://en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging
Dim inputFile As String = "C:\test\multipage.tif"
Dim strRecText As String = ""
Dim Doc1 As MODI.Document

Doc1 = New MODI.Document
Doc1.Create(inputFile)
Doc1.OCR()  ' this will ocr all pages of a multi-page tiff file
Doc1.Save() ' this will save the deskewed reoriented images, and the OCR text, back to the inputFile

For imageCounter As Integer = 0 To (Doc1.Images.Count - 1) ' work your way through each page of results
   strRecText &= Doc1.Images(imageCounter).Layout.Text    ' this puts the ocr results into a string
Next

File.AppendAllText("C:\test\testmodi.txt", strRecText)     ' write the OCR file out to disk

Doc1.Close() ' clean up
Doc1 = Nothing

وآخرون مثل تسراكت ، ولكن لدي خبرة مباشرة معها. لقد سمعت كل من الأشياء الجيدة والسيئة حول هذا الموضوع، لذلك أتصور أنه يعتمد إلى حد كبير على نوعية المصدر.

نصائح أخرى

وأنت لا يمكن استخراج النص مسحها من PDF. تحتاج برنامج OCR. والخبر السار هو أن هناك عدد قليل من الطلبات مفتوح المصدر يمكنك محاولة وسوف OCR الطريق الأكثر احتمالا أن يكون أسهل من استخدام مكتبة PDF لاستخراج النص. تحقق من تسراكت وGOCR.

ولقد نشرت حول توزيع قوات الدفاع الشعبي في واحدة من بلدي بلوق. ضرب هذا الرابط:

<وأ href = "http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox-another-sample-for- الصف-1-pupils.aspx "يختلط =" noreferrer نوفولو "> http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox -another عينة مقابل الجودة 1-pupils.aspx

وتحرير: لينك يعمل أي طويلا. أدناه نقلا عن <لأ href = "http://web.archive.org/web/20130507084207/http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using- المصدر المفتوح مكتبة pdfbox-آخر عينة مقابل الجودة 1-pupils.aspx "يختلط =" نوفولو noreferrer "> http://web.archive.org/web/20130507084207/http://devpinoy.org /blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox-another-sample-for-grade-1-pupils.aspx

<اقتباس فقرة>   

حسنا، ويستند التالية على أمثلة شعبية المتاحة على شبكة الإنترنت.   هذا ما يفعله هو "قراءة" ملف قوات الدفاع الشعبي، وإخراجه كنص في   الغنية تحكم مربع النص في النموذج. وPDFBox للمكتبة. NET يمكن أن يكون   تحميلها من سورس.

     

وتحتاج إلى إضافة إشارة إلى IKVM.GNU.Classpath وPDFBox-0.7.3. و   أيضا، FontBox-0.1.0-dev.dll وPDFBox-0.7.3.dll تحتاج إلى إضافة على   المجلد بن التطبيق الخاص بك. لسبب لا أذكر   (ربما كان ذلك من أحد الدروس)، أود أيضا أن أضيف إلى سلة   IKVM.GNU.Classpath.dll.

     

وعلى الجانب علما، وحصلت للتو على نسختي من "أول رئيس C #" (على كيث   اقتراح) من الأمازون. هذا الكتاب هو بارد! هو مكتوب حقا ل   مبتدئين. هذه الطبعة تغطي VS2008 والإطار 3.5.

     

وهنا تذهب ...

/* Marlon Ribunal
 * Convert PDF To Text
 * *******************/

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.IO;
using System.Text;
using System.ComponentModel.Design;
using System.ComponentModel;
using org.pdfbox.pdmodel;
using org.pdfbox.util;

namespace MarlonRibunal.iPdfToText
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent(); 
        }

        void Button1Click(object sender, EventArgs e)    
        {    
            PDDocument doc = PDDocument.load("C:\\pdftoText\\myPdfTest.pdf");
            PDFTextStripper stripper = new PDFTextStripper();
            richTextBox1.Text=(stripper.getText(doc));
        }

     }
}

وفي شركة كنت أعمل ل، كنا ActivePDF أدوات مع بعض النجاح:

http://www.activepdf.com/products/serverproducts/toolkit /index.cfm

وأعتقد أنك سوف تحتاج ما لا يقل عن المعيار أو إصدار برو ولكن لديهم تجارب حتى تتمكن من معرفة ما اذا كان سوف تفعل ما تريد ل.

وجوجل للبحث سريع يظهر هذه النتيجة واعدة. http://www.pdftron.com/net/index.html

ويمكنك استخدام وحدة نمطية مثل في بيرل PDF لاستخراج النص. واستخدام أداة أخرى لاستيراد المعلومات ذات الصلة في قاعدة البيانات.

وأنا متأكد من أن هناك عناصر PDF ل. NET، ولكن لم أحاول وجدت، لذلك أنا لا أعرف ما هو جيد.

وإذا كان PDF هو المسح من النص المطبوع، فإنه سيكون من الصعب (يتضمن معالجة الصور، والطابع الاعتراف الخ) لتفعل ذلك بنفسك. وPDF تخزين عموما المستندات الممسوحة ضوئيا فجبيغس داخليا. كنت أفضل استخدام أداة خارجية (أداة OCR) أن يفعل ذلك.

ولقد وجدت في الآونة الأخيرة ReportLab للحصول على بيثون.

إذا كنت الحق في الحصول عليها، sheebz يسأل كيفية استخراج حقول PDF وتحميل البيانات إلى قاعدة البيانات. هل نظرت في iTextSharp؟ - http://sourceforge.net/projects/itextsharp/

استنادا إلى إجابة مارك براكيت، قمت بإنشاء حزمة نوجيت لحزم pdftotext.

إنه مفتوح المصدر, ، استهداف صافي القياسية 1.6 و صافي الإطار 4.5.

الاستخدام:

using XpdfNet;

var pdfHelper = new XpdfHelper();

string content = pdfHelper.ToText("./pathToFile.pdf");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top