Wyodrębnianie danych z PDF .NET: Kompletny przewodnik dla deweloperów
Wyodrębnij tekst, tabele, formularze i obrazy z plików PDF w środowisku .NET za pomocą IronPDF, używając zaledwie kilku wierszy kodu — zainstaluj za pośrednictwem NuGet, załaduj plik PDF i wywołaj ExtractAllText(), aby rozpocząć pracę w mniej niż 5 minut.
Dokumenty PDF są wszechobecne w biznesie: faktury, raporty, umowy i instrukcje. Jednak programowe pozyskiwanie z nich istotnych informacji może być trudne. Pliki PDF skupiają się na wyglądzie, a nie na sposobie uzyskiwania dostępu do danych. Dla programistów pracujących z OCR w języku C# stanowi to wyjątkowe wyzwanie podczas pracy ze skanowanymi dokumentami.
Dla programistów .NET IronPDF for .NET to potężna biblioteka .NET do obsługi plików PDF, która ułatwia wyciąganie danych z plików PDF. Możesz pobierać tekst, tabele, pola formularzy, obrazy i załączniki bezpośrednio z dokumentów PDF. Niezależnie od tego, czy automatyzujesz przetwarzanie faktur, tworzysz bazę wiedzy, czy generujesz raporty, ta biblioteka pozwala zaoszczędzić sporo czasu. Podczas pracy ze skanowanymi plikami PDF możesz również potrzebować funkcji ekstrakcji tekstu PDF OCR do obsługi treści opartych na obrazach.
W niniejszym przewodniku przedstawiono praktyczne przykłady pobierania treści tekstowych, danych tabelarycznych i wartości pól formularzy, a po każdym fragmencie kodu zamieszczono objaśnienia, dzięki czemu można je dostosować do własnych projektów. Jeśli pracujesz również z innymi typami dokumentów, pomocne może okazać się zapoznanie się z odczytywaniem zeskanowanych dokumentów lub konwersją plików TIFF do formatu PDF z możliwością wyszukiwania.
Jak rozpocząć pracę z IronPDF?
Instalacja IronPDF zajmuje kilka sekund za pomocą menedżera pakietów NuGet. Otwórz konsolę menedżera pakietów i uruchom:
Install-Package IronPDF
Install-Package IronPDF
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPDF
W przypadku bardziej zaawansowanych scenariuszy instalacji zapoznaj się z dokumentacją pakietów NuGet. Po zainstalowaniu można od razu rozpocząć przetwarzanie dokumentów PDF. Oto minimalny przykład w .NET, który pokazuje prostotę API IronPDF:
using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
Imports IronPdf
' Load any PDF document
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract all text with one line
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine(allText)
Ten kod ładuje plik PDF i wyodrębnia z niego cały tekst. IronPDF automatycznie obsługuje złożone struktury plików PDF, dane formularzy i kodowania, które zazwyczaj powodują problemy w innych bibliotekach. Dane wyodrębnione z dokumentów PDF można zapisać w pliku tekstowym lub poddać dalszej obróbce w celu analizy. W przypadku bardziej złożonych potrzeb związanych z ekstrakcją danych warto zapoznać się ze specjalistycznymi technikami przetwarzania dokumentów.
Praktyczna wskazówka: Wyodrębniony tekst można zapisać w pliku .txt do późniejszego przetworzenia lub przeanalizować w celu wypełnienia baz danych, arkuszy Excel lub baz wiedzy. Ta metoda sprawdza się dobrze w przypadku raportów, umów lub dowolnych plików PDF, w których potrzebujesz szybko uzyskać surowy tekst. W przypadku scenariuszy obejmujących tabele warto zapoznać się z informacjami na temat odczytywania tabel w dokumentach, aby uzyskać bardziej uporządkowane dane.
Jak wygląda wyodrębniony tekst?

Jak mogę wyodrębnić dane z określonych stron?
Praktyczne zastosowania często wymagają precyzyjnego pozyskiwania danych. IronPDF oferuje wiele metod pozyskiwania cennych informacji z określonych stron w pliku PDF. Podejście to jest podobne do ekstrakcji specyficznej dla regionu OCR, ale dotyczy plików PDF. W tym przykładzie wykorzystamy następujący plik PDF:

Poniższy kod pobiera dane z określonych stron tego pliku PDF i zwraca wyniki do naszej konsoli. W przypadku dokumentów wielostronicowych przydatne mogą być również techniki przetwarzania wielostronicowych plików TIFF.
using IronPdf;
using System;
using System.Text.RegularExpressions;
// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
string pageText = pdf.ExtractTextFromPage(pageIndex);
// Split on 2 or more spaces (tables often flatten into space-separated values)
var tokens = Regex.Split(pageText, @"\s{2,}");
foreach (string token in tokens)
{
// Match totals, invoice headers, and invoice rows
if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
{
Console.WriteLine($"Important: {token.Trim()}");
}
}
}
using IronPdf;
using System;
using System.Text.RegularExpressions;
// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
string pageText = pdf.ExtractTextFromPage(pageIndex);
// Split on 2 or more spaces (tables often flatten into space-separated values)
var tokens = Regex.Split(pageText, @"\s{2,}");
foreach (string token in tokens)
{
// Match totals, invoice headers, and invoice rows
if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
{
Console.WriteLine($"Important: {token.Trim()}");
}
}
}
Imports IronPdf
Imports System
Imports System.Text.RegularExpressions
' Load any PDF document
Dim pdf = PdfDocument.FromFile("AnnualReport2024.pdf")
' Extract from selected pages
Dim pagesToExtract As Integer() = {0, 2, 4} ' Pages 1, 3, and 5
For Each pageIndex In pagesToExtract
Dim pageText As String = pdf.ExtractTextFromPage(pageIndex)
' Split on 2 or more spaces (tables often flatten into space-separated values)
Dim tokens = Regex.Split(pageText, "\s{2,}")
For Each token As String In tokens
' Match totals, invoice headers, and invoice rows
If token.Contains("Invoice") OrElse token.Contains("Total") OrElse token.StartsWith("INV-") Then
Console.WriteLine($"Important: {token.Trim()}")
End If
Next
Next
Ten przykład pokazuje, jak wyodrębnić tekst z dokumentów PDF, wyszukać kluczowe informacje i przygotować je do przechowywania w plikach danych lub bazie wiedzy. Metoda ExtractTextFromPage() zachowuje kolejność czytania dokumentu, dzięki czemu idealnie nadaje się do analizy dokumentów i indeksowania treści. Aby zwiększyć dokładność, warto rozważyć użycie filtrów optymalizacji obrazów podczas pracy z plikami PDF o niższej jakości.

Podczas przetwarzania dokumentów finansowych warto skorzystać z pakietu językowego Financial Language Pack, aby uzyskać większą dokładność w zakresie terminologii specjalistycznej. Ponadto śledzenie postępów może pomóc w monitorowaniu wydajności ekstrakcji w przypadku dużych partii dokumentów.
Jak wyodrębnić tabele z plików PDF?
Tabele w plikach PDF nie mają natywnej struktury — są po prostu treścią tekstową ułożoną tak, aby wyglądała jak tabela. IronPDF wyodrębnia dane tabelaryczne, zachowując układ, dzięki czemu można je przetworzyć do plików Excel lub tekstowych. Jest to podobne do ekstrakcji rysunków za pomocą OCR, ale zoptymalizowane specjalnie pod kątem treści tabelarycznych. W tym przykładzie wykorzystamy ten plik PDF:

Naszym celem jest wyodrębnienie danych z samej tabeli, co ma pokazać, że IronPDF potrafi analizować dane tabelaryczne. W przypadku bardziej zaawansowanych scenariuszy wyodrębniania tabel warto zapoznać się z funkcją odczytu tabel w dokumentach, która wykorzystuje uczenie maszynowe do obsługi złożonych struktur tabel.
using IronPdf;
using System;
using System.Text;
using System.Text.RegularExpressions;
var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
continue;
string[] rawCells = Regex.Split(line.Trim(), @"\s+");
string[] cells;
// If the line starts with "Product", combine first two tokens as product name
if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
{
cells = new string[rawCells.Length - 1];
cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
}
else
{
cells = rawCells;
}
// Keep header or table rows
bool isTableOrHeader = cells.Length >= 2
&& (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
|| Regex.IsMatch(cells[0], @"^INV-\d+"));
if (isTableOrHeader)
{
Console.WriteLine($"Row: {string.Join("|", cells)}");
string csvRow = string.Join(",", cells).Trim();
csvBuilder.AppendLine(csvRow);
}
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
using IronPdf;
using System;
using System.Text;
using System.Text.RegularExpressions;
var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
continue;
string[] rawCells = Regex.Split(line.Trim(), @"\s+");
string[] cells;
// If the line starts with "Product", combine first two tokens as product name
if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
{
cells = new string[rawCells.Length - 1];
cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
}
else
{
cells = rawCells;
}
// Keep header or table rows
bool isTableOrHeader = cells.Length >= 2
&& (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
|| Regex.IsMatch(cells[0], @"^INV-\d+"));
if (isTableOrHeader)
{
Console.WriteLine($"Row: {string.Join("|", cells)}");
string csvRow = string.Join(",", cells).Trim();
csvBuilder.AppendLine(csvRow);
}
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
Imports IronPdf
Imports System
Imports System.Text
Imports System.Text.RegularExpressions
Dim pdf = PdfDocument.FromFile("example.pdf")
Dim rawText As String = pdf.ExtractAllText()
' Split into lines for processing
Dim lines As String() = rawText.Split(ControlChars.Lf)
Dim csvBuilder As New StringBuilder()
For Each line As String In lines
If String.IsNullOrWhiteSpace(line) OrElse line.Contains("Page") Then
Continue For
End If
Dim rawCells As String() = Regex.Split(line.Trim(), "\s+")
Dim cells As String()
' If the line starts with "Product", combine first two tokens as product name
If rawCells(0).StartsWith("Product") AndAlso rawCells.Length >= 5 Then
cells = New String(rawCells.Length - 2) {}
cells(0) = rawCells(0) & " " & rawCells(1) ' Combine Product + letter
Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2)
Else
cells = rawCells
End If
' Keep header or table rows
Dim isTableOrHeader As Boolean = cells.Length >= 2 AndAlso (cells(0).StartsWith("Item") OrElse cells(0).StartsWith("Product") OrElse Regex.IsMatch(cells(0), "^INV-\d+"))
If isTableOrHeader Then
Console.WriteLine($"Row: {String.Join("|", cells)}")
Dim csvRow As String = String.Join(",", cells).Trim()
csvBuilder.AppendLine(csvRow)
End If
Next
' Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString())
Console.WriteLine("Table data exported to CSV")
Tabele w plikach PDF to zazwyczaj po prostu tekst ułożony tak, aby wyglądał jak siatka. Ta kontrola pomaga ustalić, czy dana linia należy do wiersza tabeli, czy do nagłówka. Odfiltrowując nagłówki, stopki i niepowiązany tekst, można wyodrębnić z pliku PDF czyste dane tabelaryczne, gotowe do użycia w formacie CSV lub Excel. W celu przetwarzania paragonów i faktur o złożonym układzie zapoznaj się z rozszerzeniem AdvancedScan.
Ten proces sprawdza się w przypadku formularzy PDF, dokumentów finansowych i raportów. Później możesz przekonwertować dane z plików PDF na pliki xlsx lub połączyć je w plik ZIP zawierający wszystkie przydatne dane. W przypadku złożonych tabel ze scalonymi komórkami może być konieczne dostosowanie logiki parsowania w oparciu o pozycje kolumn. Dokumentacja dotycząca danych wyjściowych zawiera szczegółowe wskazówki dotyczące pracy z wynikami w formacie strukturalnym.

Aby zwiększyć dokładność wyodrębniania tabel, warto rozważyć użycie technik wizji komputerowej do automatycznego wykrywania obszarów tabel przed przetwarzaniem. Takie podejście może znacznie poprawić wyniki w przypadku złożonych układów.
Jak wyodrębnić dane z pól formularza?
IronPDF obsługuje również wyodrębnianie i modyfikowanie danych z pól formularzy, podobnie jak funkcje odczytu paszportów w przypadku dokumentów ustrukturyzowanych:
using IronPdf;
using System.Drawing;
using System.Linq;
var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
Console.WriteLine($"{field.Name}: {field.Value}");
// Update form values if needed
if (field.Name == "customer_name")
{
field.Value = "Updated Value";
}
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
using IronPdf;
using System.Drawing;
using System.Linq;
var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
Console.WriteLine($"{field.Name}: {field.Value}");
// Update form values if needed
if (field.Name == "customer_name")
{
field.Value = "Updated Value";
}
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
Imports IronPdf
Imports System.Drawing
Imports System.Linq
Dim pdf = PdfDocument.FromFile("form_document.pdf")
' Extract form field data
Dim form = pdf.Form
For Each field In form ' Removed '.Fields' as 'FormFieldCollection' is enumerable
Console.WriteLine($"{field.Name}: {field.Value}")
' Update form values if needed
If field.Name = "customer_name" Then
field.Value = "Updated Value"
End If
Next
' Save modified form
pdf.SaveAs("updated_form.pdf")
Ten kod wyodrębnia wartości pól formularzy z plików PDF i umożliwia ich aktualizację programowo, ułatwiając przetwarzanie formularzy PDF oraz wyodrębnianie określonych zakresów informacji do analizy lub generowania raportów. Jest to przydatne do automatyzacji procesów, takich jak wdrażanie klientów, przetwarzanie ankiet lub walidacja danych. W przypadku przetwarzania dokumentów tożsamości zapoznaj się z najlepszymi praktykami dotyczącymi OCR dokumentów tożsamości.

Podczas pracy z formularzami zawierającymi pola wyboru i przyciski opcji może zaistnieć potrzeba wdrożenia niestandardowej logiki podobnej do odczytu kodów BarCode i kodów QR dla specjalnych typów pól. Dokumentacja klasy OcrResult zawiera wyczerpujące informacje na temat obsługi różnych typów wyników.
Co mam zrobić dalej?
IronPDF sprawia, że ekstrakcja danych z plików PDF w środowisku .NET jest praktyczna i wydajna. Można wyodrębniać obrazy, tekst, tabele, pola formularzy, a nawet załączniki z różnych dokumentów PDF, w tym ze skanowanych plików PDF, które zazwyczaj wymagają dodatkowej obróbki OCR. W przypadku dokumentów zeskanowanych połączenie funkcji IronPDF z IronOCR zapewnia kompleksowe możliwości przetwarzania dokumentów.
Niezależnie od tego, czy tworzysz bazę wiedzy, automatyzujesz procesy raportowania, czy też wyodrębniasz dane z plików PDF dotyczących finansów, ta biblioteka zapewnia narzędzia pozwalające wykonać te zadania bez ręcznego kopiowania lub podatnego na błędy parsowania. Jest proste, szybkie i integruje się bezpośrednio z projektami Visual Studio. W zakresie wdrażania IronPDF obsługuje różne platformy, w tym Windows, Linux, Docker oraz platformy chmurowe, takie jak AWS i Azure.
Wypróbuj to — prawdopodobnie zaoszczędzisz czas i unikniesz typowych problemów związanych z pracą z plikami PDF. Dla start-upów i małych zespołów opcje licencyjne obejmują elastyczne plany, które rosną wraz z Twoimi potrzebami. Możesz również zapoznać się z wdrażaniem kluczy licencyjnych w środowiskach produkcyjnych.
Chcesz wdrożyć funkcję wyodrębniania danych z plików PDF w swoich aplikacjach? Czy IronPDF brzmi jak biblioteka .NET dla Ciebie? Rozpocznij bezpłatny okres próbny, aby uzyskać dostęp do pełnej funkcjonalności, lub zapoznaj się z naszymi opcjami licencyjnymi do użytku komercyjnego. Zapraszamy do zapoznania się z naszą dokumentacją, w której znajdują się obszerne przewodniki i Dokumentacja API. Aby szybko wdrożyć rozwiązanie, zapoznaj się z naszymi demonstracjami i przykładami kodu, które pozwolą Ci rozpocząć pracę w ciągu kilku minut.
Często Zadawane Pytania
Jakie jest główne wyzwanie związane z pozyskiwaniem danych z dokumentów PDF?
Dokumenty PDF są zaprojektowane przede wszystkim w celu wyświetlania treści w określonym układzie, co utrudnia programowe wyodrębnianie danych ze względu na nacisk na wygląd, a nie na dostępność danych.
W jaki sposób IronOCR może pomóc w ekstrakcji danych z plików PDF w środowisku .NET?
IronOCR zapewnia narzędzia do wyodrębniania tekstu i danych z plików PDF, w tym ze skanowanych dokumentów, wykorzystując optyczne rozpoznawanie znaków (OCR) do konwersji obrazów tekstu na dane nadające się do odczytu maszynowego.
Czy IronOCR obsługuje zeskanowane dokumenty PDF?
Tak, IronOCR jest w stanie przetwarzać zeskanowane pliki PDF, wykorzystując zaawansowaną technologię OCR do rozpoznawania i wyodrębniania tekstu z obrazów zawartych w dokumencie.
Jaki język programowania jest używany w IronOCR do ekstrakcji danych z plików PDF?
IronOCR jest przeznaczony do użytku z językiem C#, co czyni go doskonałym wyborem dla programistów pracujących w środowisku .NET Framework, którzy chcą wyodrębniać dane z plików PDF.
Czy dostępne są przykłady kodu dotyczącego ekstrakcji danych z plików PDF przy użyciu IronOCR?
Tak, przewodnik zawiera kompletne przykłady kodu w języku C#, które pokazują, jak skutecznie wyodrębniać dane z plików PDF przy użyciu IronOCR.
Czy IronOCR może analizować tabele z dokumentów PDF?
IronOCR zawiera funkcję analizowania tabel z dokumentów PDF, umożliwiającą programistom wydajne wyodrębnianie danych strukturalnych.
Jakie rodzaje treści z plików PDF może wyodrębnić IronOCR?
IronOCR może wyodrębniać różne rodzaje treści z plików PDF, w tym tekst, tabele i dane ze skanowanych obrazów, co czyni go wszechstronnym narzędziem do ekstrakcji danych.



