Программно распознайте текст от сканирований в [закрытом] Файле PDF

typedef typename Tail::inUnion dummy;

Однако я не уверен, что реализация inUnion верна. Если я правильно понимаю, этот класс не должен быть создан, поэтому вкладка «fail» никогда не будет автоматически терпеть неудачу. Возможно, было бы лучше указать, находится ли тип в объединении или нет с простым булевым значением.

template  struct Contains;

template 
struct Contains >
{
    enum { result = Contains::result };
};

template 
struct Contains >
{
    enum { result = true };
};

template 
struct Contains
{
    enum { result = false };
};

PS: Посмотрите на Boost :: Variant

PS2: посмотрите на typelists , особенно в книге Андрея Александреску: Modern C ++ Design

26
задан Cœur 10 April 2017 в 16:39
поделиться

9 ответов

Я использовал pdftohtml для успешного разделения таблиц из PDF в CSV. Это основано Xpdf, который является инструментом более общего назначения, который включает pdftotext. Я просто обертываю его как Процесс. Запустите вызов с C#.

, Если Вы ищете что-то немного больше сделай сам, существует библиотека iTextSharp - порт Java iText - и PDFBox (да, это говорит Java - но у них есть версия.NET посредством IKVM.NET ). Вот некоторые статьи CodeProject об использовании iTextSharp и PDFBox от C#.

И, если Вы действительно мазохист, Вы могли бы звонить в Adobe PDF IFilter со взаимодействующим с COM. спецификации IFilter довольно просты, но я предположил бы, что interop наверху будет значительным.

Редактирование: После перечитывания вопроса и последующих ответов, стало ясно, что OP имеет дело с [1 117] изображения в его PDF. В этом случае необходимо будет извлечь изображения (библиотеки PDF выше в состоянии сделать это довольно легко), и выполните его через механизм OCR.

я использовал СПОСОБЫ в интерактивном режиме прежде с достойными результатами. Это - COM, так вызов его от C# через interop также выполнимый и симпатичный простой :

' 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

Другие как [1 115] Tesseract, но у меня есть прямой опыт с ним. Я услышал и хорошие и плохие вещи об этом, таким образом, я предполагаю, что это значительно зависит от Вашего исходного качества.

22
ответ дан Mark Brackett 28 November 2019 в 07:31
поделиться

Вы не можете извлечь просканированный текст из PDF. Вам нужно программное обеспечение OCR. Хорошие новости существует несколько приложений с открытым исходным кодом, можно попытаться, маршрут OCR, скорее всего, будет легче, чем пользование библиотекой PDF для извлечения текста. Проверьте Tesseract и GOCR.

6
ответ дан jm4 28 November 2019 в 07:31
поделиться

Я отправил о парсинге PDF в одном из моих блогов. Поразите эту ссылку:

http://devpinoy.org/blogs/marl/archive/2008/03/04/pdf-to-text-using-open-source-library-pdfbox-another-sample-for-grade-1-pupils.aspx

Редактирование: Не Свяжите долгие работы. Ниже заключенного в кавычки от 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

ну, следующее основано на популярных имеющихся в сети примерах. То, что это делает, "читается" файл PDF и произвело его как текст в управлении форматируемым полем в форме. PDFBox для библиотеки.NET может быть загружен с SourceForge.

необходимо добавить ссылку на IKVM.GNU.Classpath & PDFBox-0.7.3. И также, FontBox-0.1.0-dev.dll и PDFBox-0.7.3.dll должны быть добавлены на папке мусорного ведра Вашего приложения. По некоторым причинам я не могу вспомнить (возможно, это из одного из учебных руководств), я также добавил к мусорному ведру IKVM.GNU.Classpath.dll.

На ноте стороны, просто получил мою копию "Главного Первого C#" (на предложении Keith) от Amazon. Книга прохладна! Это действительно записано для новичков. Этот выпуск покрывает 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));
        }

     }
}
5
ответ дан David Vogel 28 November 2019 в 07:31
поделиться

В компании я раньше работал на, мы использовали инструментарий ActivePDF с некоторым успехом:

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

я думаю, что Вам были бы нужны, по крайней мере, Стандарт или Pro версия, но у них есть пробные версии, таким образом, Вы видите, сделает ли это то, к чему Вы хотите его.

2
ответ дан Dana 28 November 2019 в 07:31
поделиться

Быстрый поиск Google показывает этот многообещающий результат. http://www.pdftron.com/net/index.html

1
ответ дан Sijin 28 November 2019 в 07:31
поделиться

Можно использовать модуль как perl's PDF для извлечения текста. И используйте другой инструмент для импорта подходящей информации в базу данных.

я уверен, что существуют компоненты PDF для.NET, но я не попробовал никого, таким образом, я не знаю то, что хорошо.

1
ответ дан J.J. 28 November 2019 в 07:31
поделиться

Если PDF будет сканированиями печатаемого текста, это будет твердо (включает обработку изображений, символ, распознающий и т.д.) сделать это самостоятельно. PDF будет обычно хранить отсканированные документы как JPEGs внутренне. Вы лучше из использования стороннего инструмента (инструмент OCR), который делает это.

1
ответ дан Vivek 28 November 2019 в 07:31
поделиться

Я недавно нашел ReportLab для Python.

0
ответ дан Walter 28 November 2019 в 07:31
поделиться

Если я разбираюсь, это, sheebz спрашивает, как извлечь поля PDF и загрузить данные в базу данных. Вы посмотрели на iTextSharp? - http://sourceforge.net/projects/itextsharp/

0
ответ дан MarlonRibunal 28 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: