Jak odczytywać pliki PDF w języku C# za pomocą IronOCR
IronOCR umożliwia wyodrębnianie tekstu z plików PDF w języku C# za pomocą jednej linii kodu, obsługując wszystkie wersje PDF i zapewniając dokładne wyniki OCR dzięki silnikowi opartemu na Tesseract.
PDF to skrót od "Portable Document Format". Jest to format plików opracowany przez firmę Adobe, który zachowuje czcionki, obrazy, grafikę i układ dowolnego dokumentu źródłowego, niezależnie od aplikacji i platformy użytej do jego utworzenia. Pliki PDF są zazwyczaj używane do udostępniania i przeglądania dokumentów w spójnym formacie, niezależnie od oprogramowania lub sprzętu używanego do ich otwierania. IronOCR obsługuje różne wersje dokumentów PDF, od starszych specyfikacji PDF 1.0 po najnowsze standardy PDF 2.0.
Szybki start: OCR pliku PDF w kilka sekund
Szybko skonfiguruj OCR z IronOCR, konstruując OcrPdfInput wskazujący na twój PDF, a następnie wywołaj Read. Ten przykład pokazuje wyodrębnianie tekstu z pliku PDF przy użyciu IronOCR.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages)); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytu plików PDF
- Przygotuj dokument PDF do czytania
- Utwórz obiekt OcrPdfInput z ścieżką do pliku PDF
- Użyj metody
Read,aby przeprowadzić OCR na zaimportowanym pliku PDF - Zapoznaj się z konkretnymi stronami, podając listę indeksów stron
Jak odczytać cały plik PDF?
Rozpocznij od zainicjowania klasy IronTesseract, aby wykonać OCR. Następnie użyj instrukcji 'using', aby stworzyć obiekt OcrPdfInput, przekazując mu ścieżkę do pliku PDF. Na koniec wykonaj OCR, używając metody Read. To podejście sprawdza się zarówno w przypadku zeskanowanych plików PDF (opartych na obrazach), jak i plików PDF z możliwością wyszukiwania (opartych na tekście), co pozwala na wyodrębnianie tekstu z różnych typów plików PDF.
/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
Imports IronOcr
' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()
' Add PDF
Using pdfInput As New OcrPdfInput("Potter.pdf")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(pdfInput)
' Access the extracted text
Dim extractedText As String = ocrResult.Text
System.Console.WriteLine(extractedText)
End Using
W większości przypadków nie ma potrzeby określania właściwości DPI. Jednak podanie wysokiej liczby DPI podczas konstruowania OcrPdfInput może zwiększyć dokładność odczytu. Domyślne ustawienie DPI jest zazwyczaj wystarczające dla większości standardowych dokumentów PDF, ale w przypadku dokumentów specjalistycznych warto je dostosować.
Kiedy należy dostosować ustawienia DPI?
Ustawienia DPI (Dots Per Inch) mają kluczowe znaczenie w przypadku dokumentów skanowanych w niskiej rozdzielczości lub plików PDF zawierających mały tekst. Aby uzyskać optymalne wyniki, rozważ dostosowanie ustawień DPI w następujących przypadkach:
- Praca ze skanowanymi dokumentami o rozdzielczości poniżej 200 DPI
- Przetwarzanie historycznych lub archiwalnych plików PDF
- Radzenie sobie ze złożonymi układami lub małymi czcionkami
- Problemy z dokładnością przy ustawieniach domyślnych
W przypadku większości operacji OCR zaleca się rozdzielczość 300 DPI, natomiast w przypadku dokumentów zawierających bardzo mały tekst lub skomplikowane szczegóły może być konieczne zastosowanie rozdzielczości 600 DPI.
Jakie formaty plików obsługuje IronOCR oprócz PDF?
IronOCR zapewnia kompleksową obsługę wielu formatów plików, nie tylko PDF. Możesz przetwarzać obrazy w różnych formatach, w tym:
- JPEG/JPG dla standardowych zdjęć
- Format PNG dla obrazów z przezroczystością
- TIFF dla dokumentów wielostronicowych
- BMP dla obrazów nieskompresowanych
- GIF do prostych grafik
Ponadto IronOCR może obsługiwać strumienie PDF bezpośrednio z pamięci, co sprawia, że nadaje się do aplikacji internetowych i usług w chmurze.
Praca z typami treści PDF
Podczas przetwarzania plików PDF można zoptymalizować wydajność, określając typ zawartości. Enum PdfContents pozwala kierować na określoną zawartość:
// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);
// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);
// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);
// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);
// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
' For text-only PDFs (faster processing)
Dim textOnlyPdf = New OcrPdfInput("document.pdf", PdfContents.Text)
' For image-only PDFs (scanned documents)
Dim imageOnlyPdf = New OcrPdfInput("scanned.pdf", PdfContents.Images)
' For mixed content (default)
Dim mixedPdf = New OcrPdfInput("mixed.pdf", PdfContents.TextAndImages)
Jak odczytać konkretne strony z pliku PDF?
Podczas odczytywania konkretnych stron z dokumentu PDF należy podać numer indeksu strony do importu. Aby to zrobić, przekaż listę indeksów stron do parametru PageIndices podczas konstruowania OcrPdfInput. Należy pamiętać, że indeksy stron wykorzystują numerację zaczynającą się od zera. Ta funkcja jest szczególnie przydatna podczas pracy z dużymi dokumentami, w których tylko niektóre strony zawierają istotne informacje.
:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf-pages.cs
using IronOcr;
using System.Collections.Generic;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Create page indices list
List<int> pageIndices = new List<int>() { 0, 2 };
// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf", PageIndices: pageIndices);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
Imports IronOcr
Imports System.Collections.Generic
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Create page indices list
Private pageIndices As New List(Of Integer)() From {0, 2}
' Add PDF
Private pdfInput = New OcrPdfInput("Potter.pdf", PageIndices:= pageIndices)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(pdfInput)
Dlaczego numeracja stron zaczyna się od zera?
Indeksowanie od zera jest standardową konwencją w języku C# i większości języków programowania. Oznacza to, że pierwsza strona ma indeks 0, druga strona ma indeks 1 i tak dalej. Ta spójność z indeksowaniem tablic ułatwia programistom pracę z kolekcjami stron za pomocą kodu. Podczas konwersji numerów stron czytelnych dla człowieka (1, 2, 3...) na indeksy wystarczy odjąć 1 od numeru strony.
Jak mogę czytać strony w kolejności niechronologicznej?
Czytanie niekolejnych stron jest proste dzięki IronOCR. Wystarczy dodać wybrane indeksy stron do listy w dowolnej kolejności. Na przykład:
// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };
// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };
// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
Imports System.Collections.Generic
Imports System.Linq
' Read pages 1, 3, 5, and 10 (using zero-based indices)
Dim pageIndices As New List(Of Integer)() From {0, 2, 4, 9}
' Or use LINQ for range-based selection
Dim evenPages = Enumerable.Range(0, 10).Where(Function(x) x Mod 2 = 0).ToList()
Silnik OCR przetworzy tylko określone strony, co znacznie poprawi wydajność w przypadku dużych dokumentów.
Co się stanie, jeśli podam nieprawidłowe numery stron?
Jeśli podasz indeksy stron, które przekraczają liczbę stron dokumentu, IronOCR zgłosi wyjątek. Przed przetworzeniem należy wdrożyć obsługę błędów lub zweryfikować liczbę stron. Przed wykonaniem OCR można sprawdzić całkowitą liczbę stron pliku PDF, aby upewnić się, że indeksy są prawidłowe.
Jak wykonać OCR określonego obszaru pliku PDF?
Ograniczając obszar do przeczytania, można znacznie zwiększyć efektywność czytania. Aby to osiągnąć, należy określić dokładny obszar importowanego pliku PDF, który ma zostać odczytany. W poniższym przykładzie kodu IronOCR skupia się wyłącznie na wyodrębnieniu numeru rozdziału i tytułu. Technika ta, podobna do definiowania obszarów OCR dla obrazów, poprawia zarówno szybkość, jak i dokładność.
:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Specify crop regions
Rectangle[] scanRegions = { new Rectangle(550, 100, 600, 300) };
// Add PDF
using (var pdfInput = new OcrPdfInput("Potter.pdf", ContentAreas: scanRegions))
{
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
// Output the result to console
Console.WriteLine(ocrResult.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Specify crop regions
Private scanRegions() As Rectangle = { New Rectangle(550, 100, 600, 300) }
' Add PDF
Using pdfInput = New OcrPdfInput("Potter.pdf", ContentAreas:= scanRegions)
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(pdfInput)
' Output the result to console
Console.WriteLine(ocrResult.Text)
End Using
Jak określić prawidłowe współrzędne prostokąta?
Znalezienie właściwych współrzędnych wymaga zrozumienia układu współrzędnych pliku PDF. Konstruktor Rectangle przyjmuje cztery parametry: X (pozycja pozioma), Y (pozycja pionowa), Width i Height. Wszystkie wymiary podane są w pikselach. Narzędzia takie jak przeglądarki PDF z funkcją linijki lub narzędzia do debugowania mogą pomóc w identyfikacji dokładnych współrzędnych. Alternatywnie, można stosować metodę prób i błędów, wprowadzając niewielkie poprawki w celu zawężenia obszaru wyboru.
Aby dokładniej zdefiniować obszar, można skorzystać z funkcji podświetlania tekstu do debugowania, która pozwala wizualizować przetwarzane obszary.
Czy mogę określić wiele regionów w jednej operacji?
Tak, IronOCR obsługuje wiele regionów w ramach jednej operacji OCR. Po prostu dodaj wiele obiektów Rectangle do swojej tablicy:
Rectangle[] scanRegions = {
new Rectangle(50, 50, 200, 100), // Header region
new Rectangle(50, 200, 500, 300), // Main content region
new Rectangle(50, 550, 200, 50) // Footer region
};
Rectangle[] scanRegions = {
new Rectangle(50, 50, 200, 100), // Header region
new Rectangle(50, 200, 500, 300), // Main content region
new Rectangle(50, 550, 200, 50) // Footer region
};
Imports System.Drawing
Dim scanRegions As Rectangle() = {
New Rectangle(50, 50, 200, 100), ' Header region
New Rectangle(50, 200, 500, 300), ' Main content region
New Rectangle(50, 550, 200, 50) ' Footer region
}
Każdy region będzie przetwarzany osobno, a wyniki zostaną połączone w określonej kolejności.
Dlaczego warto używać OCR dla konkretnego regionu zamiast pełnej strony?
OCR dostosowany do regionu oferuje kilka zalet:
- Wydajność: Przetwarzanie mniejszych obszarów przebiega znacznie szybciej
- Dokładność: Skupienie się na konkretnych regionach ogranicza zakłócenia wynikające z nieistotnych treści
- Struktura: Bardziej niezawodne pobieranie danych z formularzy i tabel
- Efektywność kosztowa: krótszy czas przetwarzania oznacza niższe koszty obliczeniowe
Takie podejście jest szczególnie cenne podczas pracy z dokumentami ustrukturyzowanymi, takimi jak faktury, formularze lub raporty, w których dane pojawiają się w przewidywalnych miejscach. W przypadku złożonych struktur dokumentów warto zapoznać się z technikami specjalistycznego wyodrębniania tabel zawartych w dokumentach.
Jakie zaawansowane funkcje OCR dla plików PDF są dostępne?
IronOCR oferuje dodatkowe możliwości przetwarzania plików PDF, wykraczające poza podstawowe wyodrębnianie tekstu. Możesz tworzyć pliki PDF z możliwością wyszukiwania na podstawie zeskanowanych dokumentów, zachowując oryginalny układ i dodając warstwę tekstową do wyszukiwania i kopiowania. Biblioteka obsługuje również wielowątkowość, co pozwala na szybsze przetwarzanie dużych zbiorów plików PDF.
Dla programistów, którzy chcą rozpocząć pracę z OCR w swoich aplikacjach .NET, zapoznanie się z prostymi przykładami OCR stanowi solidną podstawę do zrozumienia możliwości i najlepszych praktyk IronOCR.
Obsługa złożonych scenariuszy związanych z plikami PDF
W przypadku trudnych dokumentów PDF IronOCR oferuje kilka zaawansowanych funkcji:
- Wstępne przetwarzanie obrazu: zastosuj filtry obrazu, aby poprawić czytelność tekstu
- Wiele języków: przetwarzaj dokumenty zawierające wiele języków jednocześnie
- Konfiguracje niestandardowe: precyzyjne dostosowanie ustawień OCR dla określonych typów dokumentów
- Opcje eksportu: Zapisywanie wyników w różnych formatach, w tym w plikach PDF z możliwością wyszukiwania oraz w formacie HTML z obsługą hOCR
Te cechy sprawiają, że IronOCR jest kompleksowym rozwiązaniem spełniającym wymagania Enterprise w zakresie przetwarzania plików PDF.
Często Zadawane Pytania
Jak wyodrębnić tekst z pliku PDF w C#?
Możesz wyodrębnić tekst z plików PDF za pomocą IronOCR za pomocą tylko jednej linii kodu. Wystarczy utworzyć instancję IronTesseract i użyć metody Read z OcrPdfInput: `using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));`. IronOCR obsługuje zarówno zeskanowane pliki PDF (na podstawie obrazu), jak i przeszukiwalne pliki PDF (na podstawie tekstu).
Jakie wersje PDF są obsługiwane do wyodrębniania tekstu?
IronOCR obsługuje wszystkie wersje PDF, od starszych specyfikacji PDF 1.0 do najnowszych standardów PDF 2.0. Silnik OCR oparty jest na technologii Tesseract, co zapewnia dokładne wyodrębnianie tekstu bez względu na wersję PDF, z którą pracujesz.
Czy mogę odczytać tylko konkretne strony z pliku PDF zamiast całego dokumentu?
Tak, IronOCR pozwala odczytywać konkretne strony z pliku PDF, podając indeksy stron. Zamiast przetwarzać cały dokument, można określić, z których stron wyodrębnić tekst za pomocą obiektu OcrPdfInput, co czyni proces OCR bardziej efektywnym dla dużych dokumentów.
Jaki jest minimalny przepływ pracy dla usługi OCR na pliku PDF?
Minimalny przepływ pracy z IronOCR składa się z 5 kroków: 1) Pobierz bibliotekę C#, 2) Przygotuj dokument PDF, 3) Utwórz obiekt OcrPdfInput ze ścieżką do pliku PDF, 4) Użyj metody Read, aby wykonać OCR, 5) Opcjonalnie określ indeksy stron do selektywnego odczytywania.
Kiedy powinienem dostosować ustawienia DPI dla OCR PDF?
Podczas gdy domyślne ustawienia DPI IronOCR działają dobrze dla większości standardowych plików PDF, warto rozważyć dostosowanie DPI przy pracy z dokumentami skanowanymi w niskiej rozdzielczości (poniżej 200 DPI) lub plikami PDF zawierającymi mały tekst. Wyższe ustawienia DPI w konstrukcji OcrPdfInput mogą znacznie zwiększyć dokładność odczytu dla dokumentów specjalistycznych.
Czy silnik OCR pracuje zarówno z zeskanowanymi plikami PDF, jak i przeszukiwalnymi plikami PDF?
Tak, IronOCR skutecznie przetwarza zarówno zeskanowane pliki PDF (na podstawie obrazu), jak i przeszukiwalne pliki PDF (na podstawie tekstu). Silnik oparty na Tesseract automatycznie obsługuje różne typy plików PDF, czyniąc go wszechstronnym w wyodrębnianiu tekstu z różnych formatów PDF bez potrzeby stosowania różnych podejść.

