C# içinde bir PDF dosyasından tablo verilerini nasıl çıkarırız.
Birçok sektörde, PDF dosyaları, raporlar, faturalar ve veri tabloları gibi yapılandırılmış belgeleri paylaşmanın tercihen kullanılan formatıdır. Ancak, PDF'lerden veri çıkarma, özellikle tablolar söz konusu olduğunda, PDF formatının doğası gereği zordur. Yapılandırılmış veri formatlarının aksine, PDF'ler öncelikle sunum için tasarlanmıştır, veri çıkarmak için değil.
Ancak güçlü bir C# PDF .NET kütüphanesi olan IronPDF ile tablolar gibi yapılandırılmış verileri PDF'lerden kolayca çıkartabilir ve bunları .NET uygulamalarınızda işleyebilirsiniz. Bu makale, IronPDF kullanarak PDF dosyalarından tablosal verileri nasıl çıkaracağınızı adım adım rehberleyecek.
PDF Belgelerinden Tabloları Ne Zaman Çıkarmanız Gerekiyor?
Tablolar, verilerinizi yapılandırmak ve görüntülemek için kullanışlı bir yoldur. İster envanter yönetimi, veri girişi, yağış gibi verileri kaydetme işleri olsun. Bu yüzden PDF belgelerinden tablolar ve tablo verilerini çıkarmak için birçok neden olabilir. En yaygın kullanım senaryolarından bazıları şunlardır:
- Veri giriş otomasyonu: PDF raporlarındaki veya faturalarındaki tabloları çıkarmak, veritabanlarını veya elektronik tabloları doldurmak gibi işlemleri otomatikleştirebilir.
- Veri analizi: İşletmeler genellikle PDF formatında yapılandırılmış raporlar alır. Tabloları çıkarmak, bu verileri programlı bir şekilde analiz etmenize olanak tanır.
- Belge dönüştürme: Tablosal veriyi Excel veya CSV gibi daha erişilebilir formatlara çıkarmak, daha kolay manipülasyon, depolama ve paylaşım sağlar.
- Denetim ve uyum: Hukuk veya finansal kayıtlara yönelik olarak, PDF belgelerinden tablolara ait verileri programlı bir şekilde çıkarmak, denetimleri otomatikleştirmeye ve uyumu sağlamaya yardımcı olabilir.
PDF Tabloları Nasıl Çalışır?
PDF dosya formatı, tablolar gibi yapılandırılmış formatlarda veri saklama kabiliyeti sunmaz. Bugünkü örneğimizde kullandığımız tablo, HTML'de oluşturulmuştu ve ardından PDF formatına dönüştürülmüştür. Tablolar metin ve çizgi olarak işlenir, bu nedenle tabloları çıkarmak genellikle bazı içeriğin çözümlemesini ve yorumlanmasını gerektirir, eğer IronOCR gibi bir OCR yazılımı kullanmıyorsanız.
How to Extract Table Data from a PDF File in C
IronPDF'in bu görevi nasıl yerine getirebileceğini araştırmadan önce, PDF çıkarmayla baş edebilecek bir çevrimiçi aracı ilk olarak keşfedelim. Bir PDF belgesinden çevrimiçi bir PDF aracını kullanarak tablo çıkarmak için aşağıda belirtilen adımları izleyin:
- Ücretsiz çevrimiçi PDF çıkarma aracına gidin
- PDF'nin icindeki tabloyu yukleyin
- Sonuclari görüntüle ve indir
Birinci Adim: Ücretsiz Cevrimici PDF Cikarim Aracina Gidin
Bugun, cevrimici PDF araci ornegi olarak Docsumo'yu kullanacagiz. Docsumo, ücretsiz PDF tablo cikarma araci sunan cevrimici bir PDF belge yapay zeka platformudur.

Ikinci Adim: Tablo Iceren PDF'yi Yukleyin
Simdi, PDF dosyanizi cikarmak icin yuklemek üzere "Dosya Yukle" dugmesine tiklayin. Arac, PDF'nizi hemen işlemeye başlayacak.

Ucuncu Adim: Sonuclari Görüntüle ve Indir
Docsumo, PDF işlemeyi bitirdiginde, cikarilan tabloyu gösterir. Daha sonra, satir ekleme veya kaldirma gibi tablo yapisinda değişiklikler yapabilirsiniz. Burada tabloyu baska bir PDF, XLS, JSON veya Metin olarak indirebilirsiniz.

IronPDF Kullanarak Tablo Verisi Cikarma
IronPDF, PDF'lerden verileri, metinleri ve grafikleri cikarmaniza izin verir, ki bu da daha sonra tablolarin programatik olarak yeniden yapılandırilmasi icin kullanilabilir. Bunu yapmak icin, once PDF'deki tablodan metinsel icerigi cikarmaniz ve daha sonra bu metni satir ve sutunlara cevirerek tabloyu ayristirmaniz gerekecektir. Tablolar cikarmaya başlamadan once, IronPDF'in ExtractAllText() metodunun calismasini inceleyelim:
using IronPDF;
class Program
{
static void Main(string[] args)
{
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("example.pdf");
// Extract all text from the PDF
string text = pdf.ExtractAllText();
// Output the extracted text to the console
Console.WriteLine(text);
}
}
using IronPDF;
class Program
{
static void Main(string[] args)
{
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("example.pdf");
// Extract all text from the PDF
string text = pdf.ExtractAllText();
// Output the extracted text to the console
Console.WriteLine(text);
}
}
Imports IronPDF
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("example.pdf")
' Extract all text from the PDF
Dim text As String = pdf.ExtractAllText()
' Output the extracted text to the console
Console.WriteLine(text)
End Sub
End Class

Bu örnekte, PDF belgesini PdfDocument sinifini kullanarak yukladik ve belgedeki tüm metni cikarmak icin ExtractAllText() metodunu kullandik, son olarak metni konsola yazdirdik.
IronPDF Kullanarak Metinden Tablo Verisi Cikarma
PDF'den metin cikarma işlemi sonrasi, tablo duz metin halinde bir dizi satir ve sutun olarak gorunecek. Bu metni satir sonlari ( ) temel alinarak bolusturdunuz, ve daha sonra araliksiz bosluklar veya virgul, sekme gibi ayiraclara gore satirlari sutunlara daha fazla bolusturdunuz. Metinden tablo ayristirmanin temel bir ornegi:
using IronPDF;
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Extract all text from the PDF
string text = pdf.ExtractAllText();
// Split the text into lines (rows)
string[] lines = text.Split('\n');
foreach (string line in lines)
{
// Split the line into columns using the tab character
string[] columns = line.Split('\t').Where(col => !string.IsNullOrWhiteSpace(col)).ToArray();
Console.WriteLine("Row:");
foreach (string column in columns)
{
Console.WriteLine(" " + column); // Output each column in the row
}
}
}
}
using IronPDF;
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
// Load the PDF document
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Extract all text from the PDF
string text = pdf.ExtractAllText();
// Split the text into lines (rows)
string[] lines = text.Split('\n');
foreach (string line in lines)
{
// Split the line into columns using the tab character
string[] columns = line.Split('\t').Where(col => !string.IsNullOrWhiteSpace(col)).ToArray();
Console.WriteLine("Row:");
foreach (string column in columns)
{
Console.WriteLine(" " + column); // Output each column in the row
}
}
}
}
Imports Microsoft.VisualBasic
Imports IronPDF
Imports System
Imports System.Linq
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")
' Extract all text from the PDF
Dim text As String = pdf.ExtractAllText()
' Split the text into lines (rows)
Dim lines() As String = text.Split(ControlChars.Lf)
For Each line As String In lines
' Split the line into columns using the tab character
Dim columns() As String = line.Split(ControlChars.Tab).Where(Function(col) Not String.IsNullOrWhiteSpace(col)).ToArray()
Console.WriteLine("Row:")
For Each column As String In columns
Console.WriteLine(" " & column) ' Output each column in the row
Next column
Next line
End Sub
End Class

Bu örnekte, PDF belgemizi yuklemek ve metin cikarmak icin onceden izlenen ayni adimlari izledik. Ardindan, text.Split('\n') kullanarak cikarilan metni satir sonlarina gore satirlara bolduk ve sonuclari lines dizisine depoladik. Ardindan, bir foreach dongusu ile dizideki satirlardan gecerek, line.Split('\t') kullanarak sekme karakteri '\t' ayirac olarak kullandik ve satirlari daha fazla sutunlara bolusturduk. Where(col => !string.IsNullOrWhiteSpace(col)).ToArray() kodu kullanilarak bos sutunlari filtreler ve sonuc olarak sutun dizisine ekleriz.
Son olarak, temel bir satir ve sutun yapılandırmasi ile metni konsol cikis penceresine yazdiririz.
Cikarilan Tablo Verilerini CSV Dosyasina Aktarma
Simdi PDF dosyalarindan tablo cikarma işlemini nasıl gerceklestirecegimizi kapsadigimiza gore, cikarilan verilerle ne yapabilecegimize bakalim. Cikarilan tabloyu bir CSV dosyasi olarak aktarmak, tablo verilerini işlemek ve veri girisi gibi gorevleri otomatiklestirmek icin kullanisli bir yoldur. Bu örnekte, tabloya simule edilmis verilerle doldurduk, bu durumda, bir haftadaki günlük yagis miktari olarak PDF dosyasindan tabloyu cikardik ve bir CSV dosyasina aktardik.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IronPDF;
class Program
{
static void Main(string[] args)
{
string pdfPath = "table.pdf";
string csvPath = "output.csv";
// Extract and parse table data
var tableData = ExtractTableDataFromPdf(pdfPath);
// Write the extracted data to a CSV file
WriteDataToCsv(tableData, csvPath);
Console.WriteLine($"Data extracted and saved to {csvPath}");
}
static List<string[]> ExtractTableDataFromPdf(string pdfPath)
{
var pdf = PdfDocument.FromFile(pdfPath);
// Extract text from the first page
var text = pdf.ExtractTextFromPage(0);
var rows = new List<string[]>();
// Split text into lines (rows)
var lines = text.Split('\n');
// Variable to hold column values temporarily
var tempColumns = new List<string>();
foreach (var line in lines)
{
var trimmedLine = line.Trim();
// Check for empty lines or lines that don't contain table data
if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.Contains("Header"))
{
continue;
}
// Split line into columns. Adjust this based on how columns are separated.
var columns = trimmedLine.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
if (columns.Length > 0)
{
// Add columns to temporary list
tempColumns.AddRange(columns);
rows.Add(tempColumns.ToArray());
tempColumns.Clear(); // Clear temporary list after adding to rows
}
}
return rows;
}
static void WriteDataToCsv(List<string[]> data, string csvPath)
{
using (var writer = new StreamWriter(csvPath))
{
foreach (var row in data)
{
// Join columns with commas and quote each field to handle commas within data
var csvRow = string.Join(",", row.Select(field => $"\"{field.Replace("\"", "\"\"")}\""));
writer.WriteLine(csvRow);
}
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IronPDF;
class Program
{
static void Main(string[] args)
{
string pdfPath = "table.pdf";
string csvPath = "output.csv";
// Extract and parse table data
var tableData = ExtractTableDataFromPdf(pdfPath);
// Write the extracted data to a CSV file
WriteDataToCsv(tableData, csvPath);
Console.WriteLine($"Data extracted and saved to {csvPath}");
}
static List<string[]> ExtractTableDataFromPdf(string pdfPath)
{
var pdf = PdfDocument.FromFile(pdfPath);
// Extract text from the first page
var text = pdf.ExtractTextFromPage(0);
var rows = new List<string[]>();
// Split text into lines (rows)
var lines = text.Split('\n');
// Variable to hold column values temporarily
var tempColumns = new List<string>();
foreach (var line in lines)
{
var trimmedLine = line.Trim();
// Check for empty lines or lines that don't contain table data
if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.Contains("Header"))
{
continue;
}
// Split line into columns. Adjust this based on how columns are separated.
var columns = trimmedLine.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
if (columns.Length > 0)
{
// Add columns to temporary list
tempColumns.AddRange(columns);
rows.Add(tempColumns.ToArray());
tempColumns.Clear(); // Clear temporary list after adding to rows
}
}
return rows;
}
static void WriteDataToCsv(List<string[]> data, string csvPath)
{
using (var writer = new StreamWriter(csvPath))
{
foreach (var row in data)
{
// Join columns with commas and quote each field to handle commas within data
var csvRow = string.Join(",", row.Select(field => $"\"{field.Replace("\"", "\"\"")}\""));
writer.WriteLine(csvRow);
}
}
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports IronPDF
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim pdfPath As String = "table.pdf"
Dim csvPath As String = "output.csv"
' Extract and parse table data
Dim tableData = ExtractTableDataFromPdf(pdfPath)
' Write the extracted data to a CSV file
WriteDataToCsv(tableData, csvPath)
Console.WriteLine($"Data extracted and saved to {csvPath}")
End Sub
Private Shared Function ExtractTableDataFromPdf(ByVal pdfPath As String) As List(Of String())
Dim pdf = PdfDocument.FromFile(pdfPath)
' Extract text from the first page
Dim text = pdf.ExtractTextFromPage(0)
Dim rows = New List(Of String())()
' Split text into lines (rows)
Dim lines = text.Split(ControlChars.Lf)
' Variable to hold column values temporarily
Dim tempColumns = New List(Of String)()
For Each line In lines
Dim trimmedLine = line.Trim()
' Check for empty lines or lines that don't contain table data
If String.IsNullOrEmpty(trimmedLine) OrElse trimmedLine.Contains("Header") Then
Continue For
End If
' Split line into columns. Adjust this based on how columns are separated.
Dim columns = trimmedLine.Split( { " "c, ControlChars.Tab }, StringSplitOptions.RemoveEmptyEntries)
If columns.Length > 0 Then
' Add columns to temporary list
tempColumns.AddRange(columns)
rows.Add(tempColumns.ToArray())
tempColumns.Clear() ' Clear temporary list after adding to rows
End If
Next line
Return rows
End Function
Private Shared Sub WriteDataToCsv(ByVal data As List(Of String()), ByVal csvPath As String)
Using writer = New StreamWriter(csvPath)
For Each row In data
' Join columns with commas and quote each field to handle commas within data
Dim csvRow = String.Join(",", row.Select(Function(field) $"""{field.Replace("""", """""")}"""))
writer.WriteLine(csvRow)
Next row
End Using
End Sub
End Class
Örnek PDF Dosyasi

CSV Dosya Çıkışı

Goruldugu gibi, PDF tablosunu basariyla CSV'ye aktardik. Once, tabloyu iceren PDF'yi yukledik ve yeni bir CSV dosya yolu oluşturduk. Bundan sonra, var tableData = ExtractTableDataFromPdf(pdfPath) satirini kullanarak tabloyu cikardik, ki bu ExtractTableDataFromPdf() metodunu cagirir. Bu metod, tablonun bulundugu PDF sayfasindaki tüm metni cikarir ve text degiskeninde depolar.
Daha sonra metni satir ve sutunlara bolusturduk. Son olarak, bu bolme işleminden donen sonucu aldi ve static void WriteDataToCsv() metodunu cagirarak, cikarilan, bolusturulmus metni StreamWriter kullanarak CSV dosyamiza yazdik.
Ipuclari ve En Iyi Uygulamalar
PDF tablolarla calisirken, temel bazi en iyi uygulamalar izleyerek hata ve sorunlarla karsilasma olasiligini en aza indirebilirsiniz.
- PDF'leri onceden isleyin: Mumkunse, PDF'lerinizi tutarli formatlama saglamak icin onceden isleyin, bu cikarma işlemini basitlestirebilir.
- Veriyi dogrulayın: Sadece cikarilan verilerin dogrulugunu ve tamligini saglamak icin verileri her zaman dogrulayin.
- Hatalarla bas edin: Metin cikarma veya ayrisma basarisiz oldugunda kodunuzu bir try-catch bloguna sararak hata yonetimi uygulayin.
- Performansi optimize edin: Buyuk PDF'ler icin, performans sorunlarini halletmek icin metin cikarma ve ayrisma işlemlerini optimize etmeyi dusunun.
IronPDF Lisanslama
IronPDF, IronPDF'in sunabilecegi tüm guclu özellikleri denemeniz icin bir lisans yapmaya karar vermeden once deneme sansiniz olan farkli lisanslama seçenekleri sunar.
Sonuç
IronPDF kullanarak PDF'lerden tablolar cikarmak, veri cikarma işlemlerini otomatiklestirmek, analizleri kolaylastirmak ve belgeleri daha erisilebilir formatlara dönüştürmek icin guclu bir yoldur. Sadece basit tablolarla mi yoksa karmasik, duzensiz formatlarla mi calisiyorsunuz; IronPDF, tablo verilerini etkin bir sekilde cikarmak ve işlemek icin gereken araclari saglar.
IronPDF ile, otomatik veri girisi, belge dönüştürme ve veri analizi gibi is akislari basitlestirilebilir. IronPDF'in sundugu esneklik ve gelişmiş özellikler, ceşitli PDF tabanli gorevlerle bas etmesi icin degerli bir aractir.
Sıkça Sorulan Sorular
C# kullanarak PDF'den tabloları nasıl çıkarabilirim?
C#'ta bir PDF'den tabloları çıkarmak için IronPDF'i kullanabilirsiniz. PDF belgesini IronPDF kullanarak yükleyin, metni çıkarın ve ardından metni programatik olarak satır ve sütunlara ayırın.
PDF belgelerinden tablo verilerini çıkarmak neden zordur?
PDF'ler, veri yapılandırması yerine öncelikle sunum için tasarlanmıştır, bu da tablolar gibi yapılandırılmış verilerin çıkarılmasını zorlaştırır. IronPDF gibi araçlar, bu verileri etkili bir şekilde yorumlayıp çıkarmanıza yardımcı olur.
PDF'lerden tablolar çıkarmanın faydaları nelerdir?
PDF'lerden tabloları çıkarmak, veri girişi otomasyonunu sağlar, veri analizini kolaylaştırır, belgeleri daha erişilebilir formatlara dönüştürür ve denetleme süreçlerinde uyumu sağlar.
PDF çıkarımında karmaşık tablo formatları nasıl yönetilir?
IronPDF, karmaşık ve düzensiz tablo formatlarından bile tablo verilerini çıkarmak ve işlemek için yetenekler sunar ve doğru veri çıkarımını sağlar.
Çıkarılan PDF tablo verilerini CSV'ye dönüştürme süreci nedir?
IronPDF kullanarak bir PDF'den tablo verilerini çıkardıktan ve ayrıştırdıktan sonra, bu verileri ayrıştırılmış verileri bir StreamWriter kullanarak bir CSV dosyasına yazarak dışa aktarabilirsiniz.
PDF tablo çıkarımı için en iyi uygulama yöntemleri nelerdir?
PDF dosyalarını tutarlı formatlama için ön işleme tabi tutun, çıkarılan verileri doğrulayın, hata yönetimini uygulayın ve büyük PDF dosyaları ile çalışırken performansı optimize edin.
IronPDF denetleme ve uyumluluk görevlerine yardımcı olabilir mi?
Evet, IronPDF, PDF'lerden tablo verilerini çıkartıp bunları Excel veya CSV gibi formatlara dönüştürerek, denetleme ve uyumluluk süreçlerine inceleme ve analiz için verileri daha erişilebilir hale getirerek yardımcı olabilir.
IronPDF hangi lisans seçeneklerini sunar?
IronPDF, özelliklerini satın almadan önce keşfedebilmeniz için deneme sürümleri de dahil olmak üzere çeşitli lisanslama seçenekleri sunar.
PDF'lerden tabloları çıkarmada hangi yaygın sorun giderme senaryoları ortaya çıkabilir?
Yaygın sorunlar arasında tutarsız tablo formatlaması ve metin çıkarma hataları bulunur. IronPDF'in sağlam özelliklerini kullanmak, doğru ayrıştırma yetenekleri sağlayarak bu zorlukların üstesinden gelmeye yardımcı olabilir.
IronPDF, .NET 10 ile tamamen uyumlu mu ve tablo çıkarma iş akışlarını nasıl fayda sağlar?
Evet - IronPDF, .NET 10'u (aynı zamanda .NET 9, 8, 7, 6, Çekirdek, Standart ve Çerçeve) desteklemektedir ve bu nedenle en son .NET 10 projelerinde yapılandırma sorunları olmadan kullanabilirsiniz. .NET 10 üzerinde çalışan geliştiriciler, PDF işlemleri ve tablo çıkarma işlemlerini hızlandırmaya yardımcı olan, azaltılmış tahsisatlar ve gelişmiş JIT derleyici optimizasyonları gibi çalışma zamanı performans iyileştirmelerinden yararlanır.




