PDFファイル内のスキャンからのテキストをプログラムで認識する[終了]

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

  •  03-07-2019
  •  | 
  •  

質問

データベースにインポートする必要があるデータを含むPDFファイルがあります。ファイルは、印刷された英数字テキストのPDFスキャンのようです。 10ポイントのように見えます。タイムズニューロマン。

このテキストを認識および解析できるツールまたはコンポーネントはありますか?

役に立ちましたか?

解決

pdftohtml を使用して、PDFから表をCSVに正常に削除しました。 Xpdf に基づいています。これは、 pdftotext 。 C#からのProcess.Start呼び出しとしてラップします。

もう少しDIYを探しているなら、 iTextSharp ライブラリがあります-Javaの移植版 iText -および PDFBox (はい、Javaと言いますが、によって.NETバージョンを持っていますIKVM.NET )。 iTextSharp および C#のPDFBox

そして、あなたがマゾヒストなら 、アドビの PDF IFilter とCOM相互運用機能。 IFilterの仕様は非常に単純ですが、相互運用のオーバーヘッドは推測できます。重要です。

編集:質問とそれに続く回答を読み直した後、OPがPDFの画像を処理していることが明らかになりました。その場合、画像を抽出する必要があり(上記のPDFライブラリーはかなり簡単にこれを行うことができます)、OCRエンジンで実行する必要があります。

MODI をインタラクティブに使用したことがありますが、結果はまともです。 COMであるため、interopを介してC#から呼び出すことも実行可能であり、かなりシンプル

' 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

Tesseract などがありますが、私は直接経験しています。良い点と悪い点の両方を聞いたことがあるので、ソースの品質に大きく依存すると思います。

他のヒント

PDFからスキャンしたテキストを抽出することはできません。 OCRソフトウェアが必要です。幸いなことに、試せるオープンソースアプリケーションがいくつかあり、OCRルートはPDFライブラリを使用してテキストを抽出するよりも簡単です。 TesseractとGOCRをご覧ください。

私は私のブログの1つで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

  

まあ、以下はWebで入手できる一般的な例に基づいています。   これが行うことは「読む」ことです。 PDFファイルをテキストとして出力し、   フォーム内のリッチテキストボックスコントロール。 .NETライブラリーのPDFBoxは   sourceforgeからダウンロード。

     

IKVM.GNU.Classpath&への参照を追加する必要がありますPDFBox-0.7.3。そして   また、FontBox-0.1.0-dev.dllとPDFBox-0.7.3.dllを追加する必要があります   アプリケーションのbinフォルダー。なんらかの理由で思い出せない   (多分それはチュートリアルの1つから)、私もビンに追加しました   IKVM.GNU.Classpath.dll。

     

補足として、「Head First 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

少なくともStandardまたはProバージョンが必要だと思いますが、試用版があるので、望みどおりに動作するかどうかを確認できます。

グーグルで簡単に検索すると、この有望な結果が表示されます。 http://www.pdftron.com/net/index.html

perlの PDF などのモジュールを使用して抽出できますテキスト。別のツールを使用して、関連情報をデータベースにインポートします。

.NET用のPDFコンポーネントは確かにありますが、試したことがないので、何が良いのかわかりません。

PDFが印刷されたテキストのスキャンである場合、それを自分で行うのは困難です(画像処理、文字認識などを含む)。 PDFは通常、スキャンしたドキュメントをJPEGとして内部的に保存します。これを行うサードパーティのツール(OCRツール)を使用するほうがよいでしょう。

最近 ReportLab for Pythonを見つけました。

正しければ、sheebzはPDFフィールドを抽出し、データをデータベースにロードする方法を尋ねています。 iTextSharpを見たことがありますか? - http://sourceforge.net/projects/itextsharp/

Mark Brackettの答えに基づいて、 Nugetパッケージを作成して、 pdftotext

オープンソースで、 .net standard 1.6 および .net framework 4.5

使用法:

using XpdfNet;

var pdfHelper = new XpdfHelper();

string content = pdfHelper.ToText("./pathToFile.pdf");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top