IRONSOFTWAREHOME

Jak odczytywać tabele w dokumentach za pomocą języka C#

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

IronOCR umożliwia programistom C# wyodrębnianie danych z tabel w PDF i obrazach przy użyciu zaawansowanych modeli uczenia maszynowego, obsługując zarówno proste tabele z podstawowymi komórkami, jak i złożone struktury jak faktury ze scalonymi komórkami za pomocą metody ReadDocumentAdvanced.

Pobieranie danych z tabel przy użyciu zwykłego Tesseracta może być trudne, ponieważ tekst często znajduje się w komórkach i jest rozrzucony po całym dokumencie. Jednak nasza biblioteka zawiera model uczenia maszynowego, który został wyszkolony i dostrojony pod kątem dokładnego wykrywania i wyodrębniania danych z tabel. Niezależnie od tego, czy przetwarzasz raporty finansowe, listy zapasów czy dane z faktur, IronOCR zapewnia narzędzia do wydajnego analizowania danych strukturalnych.

Dla prostych tabel polegaj na prostym wykrywaniu tabel przy użyciu standardowej klasy OcrInput. Dla bardziej złożonych struktur nasza wyłączna metoda ReadDocumentAdvanced dostarcza solidnych wyników, skutecznie analizując tabele i dostarczając danych. Ta zaawansowana metoda wykorzystuje uczenie maszynowe do rozpoznawania układów tabel, scalonych komórek i złożonego formatowania, z którymi tradycyjne OCR często ma trudności.

Szybki start: Wyodrębnianie złożonych komórek tabeli za pomocą jednego wywołania

Rozpocznij w kilka minut—ten przykład pokazuje, jak pojedyncze wywołanie IronOCR z użyciem ReadDocumentAdvanced dostarcza szczegółowych danych komórek tabel z złożonego dokumentu.
Demonstruje łatwość użytkowania poprzez wczytanie pliku PDF, zastosowanie zaawansowanego wykrywania tabel i bezpośrednie zwrócenie listy informacji o komórkach.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Skopiuj i uruchom ten fragment kodu.

    var cells = new IronTesseract().ReadDocumentAdvanced(new OcrInput().LoadPdf("invoiceTable.pdf")).Tables.First().CellInfos;
    C#
  3. 3Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
    arrow pointer

Poniższe kroki pomogą Ci rozpocząć pracę z odczytywaniem tabel za pomocą IronOCR:


Jak wyodrębnić dane z prostych tabel?

Ustawienie właściwości ReadDataTables na true włącza wykrywanie tabel przy użyciu Tesseract. Takie podejście sprawdza się dobrze w przypadku prostych tabel z wyraźnymi granicami komórek i bez komórek połączonych. Aby przetestować tę funkcję, stworzyłem prosty plik PDF z tabelą, który można pobrać tutaj: "simple-table.pdf". Za pomocą tej metody można wykrywać proste tabele bez scalonych komórek. W przypadku bardziej złożonych tabel należy skorzystać z metody opisanej poniżej.

Standardowa metoda wykrywania tabel jest szczególnie skuteczna w przypadku:

  • Eksport do arkuszy kalkulacyjnych
  • Podstawowe tabele danych o stałej strukturze wierszy/kolumn
  • Raporty zawierające dane tabelaryczne
  • Proste listy inwentarzowe

W przypadku ogólnego wykorzystania funkcji OCR do wyodrębniania tekstu z plików PDF, metoda ta płynnie integruje się z szerszymi możliwościami przetwarzania dokumentów oferowanymi przez IronOCR.

using IronOcr;
using System;
using System.Data;

// Instantiate OCR engine
var ocr = new IronTesseract();

// Enable table detection
ocr.Configuration.ReadDataTables = true;

using var input = new OcrPdfInput("simple-table.pdf");
var result = ocr.Read(input);

// Retrieve the data
var table = result.Tables[0].DataTable;

// Print out the table data
foreach (DataRow row in table.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write(item + "\t");
    }
    Console.WriteLine();
}

Jak odczytać złożone tabele faktur?

Jednym z częściej spotykanych złożonych tabel w środowisku biznesowym są faktury. Faktury to złożone tabele zawierające wiersze i kolumny danych, często z połączonymi komórkami, zmienną szerokością kolumn i strukturami zagnieżdżonymi. Z IronOCR korzystamy z metody ReadDocumentAdvanced, aby skutecznie nimi zarządzać. Proces obejmuje skanowanie dokumentu, identyfikację struktury tabeli i wyodrębnianie danych. W tym przykładzie używamy pliku "invoiceTable.PDF", aby pokazać, w jaki sposób IronOCR pobiera wszystkie informacje z faktury.

Metoda ReadDocumentAdvanced wymaga instalacji pakietu IronOcr.Extensions.AdvancedScan wraz z podstawowym pakietem IronOCR. To rozszerzenie zapewnia zaawansowane możliwości uczenia maszynowego, specjalnie dostosowane do złożonych układów dokumentów.

Zwróć uwagę:

Korzystanie z zaawansowanego skanowania w środowisku .NET Framework wymaga, aby projekt działał na architekturze x64. Aby to osiągnąć, przejdź do konfiguracji projektu i odznacz opcję "Preferuj 32-bit". Więcej informacji można znaleźć w poniższym przewodniku dotyczącym rozwiązywania problemów: "Zaawansowane skanowanie w środowisku .NET Framework".
)]

using IronOcr;
using System.Linq;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("invoiceTable.pdf");

// Perform OCR
var result = ocr.ReadDocumentAdvanced(input);

var cellList = result.Tables.First().CellInfos;

Metoda ta dzieli dane tekstowe dokumentu na dwie kategorie: jedną otoczoną ramkami, a drugą bez ramek. W przypadku treści w ramkach biblioteka dzieli ją dalej na podsekcje w oparciu o strukturę tabeli. Metoda ta doskonale sprawdza się w obsłudze:

  • Pozycje faktury z różnymi opisami
  • Wielokolumnowe zestawienia cen
  • Bloki adresów wysyłkowych i rozliczeniowych
  • Sekcje dotyczące podatków i obliczeń sumarycznych
  • Informacje w nagłówku i stopce

Wyniki przedstawiono poniżej. Ponieważ ta metoda skupia się na informacjach zawartych w obramowaniach, wszelkie połączone komórki obejmujące wiele wierszy będą traktowane jako pojedyncza komórka.

Jak wyglądają wyodrębnione dane?

Iron Software OCR wyodrębniające dane tabeli z faktury wysyłkowej do ustrukturyzowanego formatu hierarchicznego

Jak uporządkować i przetworzyć wyodrębnione komórki tabeli?

W obecnej implementacji wyodrębnione komórki nie są jeszcze odpowiednio uporządkowane. Jednak każda komórka zawiera cenne informacje, takie jak współrzędne X i Y, wymiary i inne. Korzystając z tych danych, możemy stworzyć klasę pomocniczą do różnych celów. Informacje w komórce obejmują:

  • Precyzyjne współrzędne X/Y do pozycjonowania
  • Wymiary szerokości i wysokości
  • Treść tekstowa
  • Wyniki pewności
  • Relacje komórek

Te szczegółowe informacje umożliwiają programowe odtworzenie struktury tabeli i zastosowanie niestandardowej logiki do ekstrakcji danych. Można również użyć tych współrzędnych do zdefiniowania konkretnych obszarów do ukierunkowanego przetwarzania OCR w kolejnych operacjach.

Poniżej znajduje się kilka podstawowych metod pomocniczych:

using System;
using System.Collections.Generic;
using System.Linq;

// A helper class to process table data by sorting cells based on coordinates
public static class TableProcessor
{
    // Method to organize cells by their coordinates (Y top to bottom, X left to right)
    public static List<CellInfo> OrganizeCellsByCoordinates(List<CellInfo> cells)
    {
        // Sort cells by Y (top to bottom), then by X (left to right)
        var sortedCells = cells
            .OrderBy(cell => cell.CellRect.Y)
            .ThenBy(cell => cell.CellRect.X)
            .ToList();

        return sortedCells;
    }

    // Example method demonstrating how to process multiple tables
    public static void ProcessTables(Tables tables)
    {
        foreach (var table in tables)
        {
            var sortedCells = OrganizeCellsByCoordinates(table.CellInfos);

            Console.WriteLine("Organized Table Cells:");

            // Initialize previous Y coordinate
            int previousY = sortedCells.Any() ? sortedCells.First().CellRect.Y : 0;

            foreach (var cell in sortedCells)
            {
                // Print a new line if the Y-coordinate changes, indicating a new row
                if (Math.Abs(cell.CellRect.Y - previousY) > cell.CellRect.Height * 0.8)
                {
                    Console.WriteLine();  // Start a new row
                    previousY = cell.CellRect.Y;
                }

                // Print the cell text followed by a tab
                Console.Write($"{cell.CellText}\t");
            }

            Console.WriteLine("\n--- End of Table ---");  // End of a table
        }
    }

    // Method to extract a specific row by the given index
    public static List<CellInfo> ExtractRowByIndex(TableInfo table, int rowIndex)
    {
        if (table == null || table.CellInfos == null || !table.CellInfos.Any())
        {
            throw new ArgumentException("Table is empty or invalid.");
        }

        var sortedCells = OrganizeCellsByCoordinates(table.CellInfos);
        List<List<CellInfo>> rows = new List<List<CellInfo>>();

        // Group cells into rows based on Y coordinates
        int previousY = sortedCells.First().CellRect.Y;
        List<CellInfo> currentRow = new List<CellInfo>();

        foreach (var cell in sortedCells)
        {
            if (Math.Abs(cell.CellRect.Y - previousY) > cell.CellRect.Height * 0.8)
            {
                // Store the completed row and start a new one
                rows.Add(new List<CellInfo>(currentRow));
                currentRow.Clear();

                previousY = cell.CellRect.Y;
            }

            currentRow.Add(cell);
        }

        // Add the last row if it wasn't added yet
        if (currentRow.Any())
        {
            rows.Add(currentRow);
        }

        // Retrieve the specified row
        if (rowIndex < 0 || rowIndex >= rows.Count)
        {
            throw new IndexOutOfRangeException($"Row index {rowIndex} is out of range.");
        }

        return rows[rowIndex];
    }
}

Najlepsze praktyki dotyczące ekstrakcji tabel

Podczas pracy z ekstrakcją tabel w IronOCR należy wziąć pod uwagę następujące najlepsze praktyki:

  1. Jakość dokumentu: Dokumenty o wyższej rozdzielczości dają lepsze wyniki. W przypadku dokumentów zeskanowanych należy zapewnić rozdzielczość co najmniej 300 DPI.

  2. Przetwarzanie wstępne: W przypadku dokumentów o niskiej jakości lub z przekrzywionymi tabelami warto rozważyć użycie funkcji korekcji obrazu IronOCR przed przetwarzaniem.

  3. Wydajność: W przypadku dużych dokumentów zawierających wiele tabel warto rozważyć wykorzystanie wielowątkowości i obsługi asynchronicznej w celu równoległego przetwarzania stron.

  4. Opcje wyjściowe: Po wyodrębnieniu danych z tabeli można wyeksportować wyniki w różnych formatach. Dowiedz się więcej o opcjach eksportu danych oraz o tym, jak tworzyć pliki PDF z możliwością wyszukiwania na podstawie przetworzonych dokumentów.

  5. Przetwarzanie strumieniowe: W przypadku aplikacji internetowych lub scenariuszy wykorzystujących dokumenty w pamięci warto rozważyć użycie OCR dla strumieni PDF, aby uniknąć operacji na systemie plików.

Podsumowanie

IronOCR zapewnia zaawansowane możliwości wyodrębniania tabel zarówno dzięki standardowemu wykrywaniu opartemu na Tesseract, jak i zaawansowanym metodom uczenia maszynowego. Standardowe podejście działa dobrze dla prostych tabel, podczas gdy metoda ReadDocumentAdvanced wyróżnia się w złożonych dokumentach jak faktury. Dzięki udostępnionym metodom pomocniczym możesz organizować i przetwarzać wyodrębnione dane zgodnie ze swoimi konkretnymi potrzebami.

Poznaj więcej funkcji IronOCR, aby usprawnić procesy przetwarzania dokumentów i w pełni wykorzystać potencjał optycznego rozpoznawania znaków w aplikacjach .NET.

Często Zadawane Pytania

Jak mogę wyodrębnić dane tabeli z PDFów i obrazów w C#?

IronOCR umożliwia programistom C# ekstrakcję danych tabeli z PDFów i obrazów za pomocą zaawansowanych modeli uczenia maszynowego. Dla prostych tabel użyj klasy OcrInput z ustawioną właściwością ReadDataTables na true. Dla złożonych tabel ze scalonymi komórkami użyj metody ReadDocumentAdvanced dla bardziej dokładnych wyników.

Jaka jest różnica między prostą a złożoną ekstrakcją tabeli?

Prosta ekstrakcja tabeli w IronOCR korzysta z właściwości ReadDataTables z Tesseract i działa dobrze dla podstawowych tabel z wyraźnymi granicami komórek. Złożona ekstrakcja tabeli wymaga metody ReadDocumentAdvanced, która używa uczenia maszynowego do obsługi scalonych komórek, faktur i złożonego formatowania.

Jak szybko wyekstrahować dane z złożonych tabel?

Użyj metody ReadDocumentAdvanced w IronOCR w jednym wywołaniu: var cells = new IronTesseract().ReadDocumentAdvanced(new OcrInput().LoadPdf('invoiceTable.pdf')).Tables.First().CellInfos; To wykorzystuje uczenie maszynowe do zrozumienia układów tabeli i złożonego formatowania.

Jakie typy dokumentów najlepiej działają z wykrywaniem prostych tabel?

Metoda wykrywania prostych tabel w IronOCR działa szczególnie dobrze z eksportami arkuszy kalkulacyjnych, podstawowymi tabelami danych z jednolitą strukturą wierszy/kolumn, raportami z danymi tabelarycznymi oraz prostymi listami inwentarzowymi bez scalonych komórek.

Jak włączyć wykrywanie tabeli dla podstawowych tabel?

Aby włączyć wykrywanie tabeli w IronOCR dla podstawowych tabel, ustaw właściwość ReadDataTables na true. To używa możliwości wykrywania tabel Tesseract i działa dobrze dla tabel z wyraźnymi granicami komórek i bez scalonych komórek.

Czy biblioteka obsługuje faktury i raporty finansowe o złożonych układach?

Tak, metoda ReadDocumentAdvanced w IronOCR jest specjalnie zaprojektowana do obsługi złożonych dokumentów, takich jak faktury i raporty finansowe. Używa modeli uczenia maszynowego wyszkolonych do wykrywania i wyodrębniania danych z tabel ze scalonymi komórkami i złożonym formatowaniem.

Is it possible to organize extracted table cells based on coordinates using IronOCR?

Yes, IronOCR provides detailed information for each extracted cell, including its coordinates. You can use this data to organize cells programmatically by sorting them based on X and Y coordinates, allowing for precise reconstruction of the table structure.

What document quality is recommended for optimal results when using IronOCR for table extraction?

For optimal results, it is recommended to use documents with a minimum resolution of 300 DPI. Higher quality documents improve the accuracy of the OCR process and result in better table extraction outcomes.

Can IronOCR process tables in multi-page documents effectively?

Yes, IronOCR can process tables in multi-page documents effectively. It supports parallel processing using multithreading and async support to handle large documents with multiple tables efficiently.

What output options does IronOCR provide after extracting table data?

IronOCR provides several output options after extracting table data, including exporting results in various formats and creating searchable PDFs. Explore its data output options to suit your needs.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 6,236,385Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz Przeglądaj i szukaj „IronOCR”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

lub pobierz Instalator Windows tutaj.

  1. Pobierz i rozpakuj IronOCR do lokalizacji, takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań Visual Studio kliknij prawym przyciskiem myszy Odwołania. Wybierz Przeglądaj, „IronOCR.dll”

Licencje od 749 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta