【C#】PDFからテキスト情報を抽出する(iText使用)

Sponsored Links

PDFからテキスト情報をiTextを使用して抽出する。(OCRではないので、PDF上で文字データをコピー&ペーストできるPDFファイルである必要がある。)今回は、取得位置を指定し、その範囲内の文字のみを抽出する。

Sponsored Links

NuGetでiTextを追加

Manage NuGetからiTextを選択する。必要なDependencyも一緒に追加される。

取得位置を計測

サンプルのPDFを用意し、ページ内の左下からみて、抽出文字の開始位置、取得文字列の範囲を計測する。
Adobe ReaderのMeasureを使用し、インチで計測し、ポイントに換算する。(インチ✕72がポイントの値となる)

Measureに行くには、Adobe Readerの右パネルからMore Toolsをクリックする。


この中からMeasureを選択する。

Measureを使用し、取得する文字列の左下の座標、文字列の横幅、縦幅を取得する。
ここではインチで取得のため、後ほどC#で使用する際にポイント変換を行う。(インチに72をかけけるとポイントとなる。)

①〜④までの順番は後ほど出てくるRectangleを使用するArgumentの順番

コード

using System;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Filter;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

namespace PDFReaderIText
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            string fileName = @"ファイルパスを指定する/SAMPLE.pdf";
            PdfReader pdfReader = new PdfReader(fileName);
            PdfDocument pdfDocument = new PdfDocument(pdfReader);

            for(int pageNum = 1; pageNum <= pdfDocument.GetNumberOfPages(); pageNum++)
            {
                PdfPage pdfPage = pdfDocument.GetPage(pageNum);
                //下記で指定する値がAdobe Readerから取得した値をポイントに変換した数値
                //順番は、左下を(0,0)としたときの①x座標、②左下のy座標、③横幅、④縦幅  
                Rectangle rectangle = new Rectangle(81, 591, 145, 84);
                Console.WriteLine(GetTextInRectangle(pdfPage, rectangle));
            }
        }

        static string GetTextInRectangle(PdfPage page, Rectangle rect)
        {
            var strategy = new FilteredTextEventListener(new LocationTextExtractionStrategy(), new TextRegionEventFilter(rect));
            var parser = new PdfCanvasProcessor(strategy);
            parser.ProcessPageContent(page);

            return strategy.GetResultantText();
        }
    }
}

このような実行結果を得られる。

プロジェクトは下記より。最初にNuGetのリストアが必要。

IT
Sponsored Links
Sponsored Links
Sponsored Links
ようさんチョットでぶ
Copied title and URL
Bitnami