1. Ürün:% s
  2.   PDF
  3.   Java
  4.   Tabula-Java
 
  

PDF'lerden Tablolar Çıkaran Ücretsiz Java PDF Kütüphanesi

PDF dosyalarından programlı olarak tablolar çıkaran Açık Kaynak Java API'si. Çıkarılan tabloları kolayca CSV'ye dönüştürebilir ve kilitli PDF tablolarını yapılandırılmış veri formatlarına dönüştürür.

Tabula-Java nedir?

PDF dosyaları iş dünyasında her yerde—raporlar, faturalar, araştırma makaleleri ve finansal tablolar. Ancak sürekli bir sorun var: bu belgelerden tablo verilerini çıkarmak son derece zor. Kopyala‑yapıştır genellikle bozuk verilere yol açar ve manuel yeniden yazma zahmetli ve hataya açıktır. İşte Tabula-Java burada devreye giriyor. Tabula-Java, PDF belgelerinden programlı olarak tabloları çıkaran güçlü bir açık kaynak kütüphanesidir. Sağlam PDF işleme temelleri üzerine inşa edilmiş bu Java kütüphanesi, kilitli PDF tablolarını gerçekten çalışabileceğiniz yapılandırılmış veri formatlarına dönüştürür. Veri boru hatları oluşturuyor, rapor işleme otomasyonu yapıyor ya da sadece PDF tablolarıyla uğraşmaktan sıkıldıysanız, Tabula-Java şık bir çözüm sunar.

Genel PDF ayrıştırıcıların her şeyi yapılandırılmamış metin olarak ele almasının aksine, Tabula-Java tablo yapılarını anlar. Satırları, sütunları ve hücreleri tanır, veri noktaları arasındaki ilişkileri korur. Bu ayrım kritiktir—"John 42 Engineer" ifadesinin bir metin yığını olarak elde edilmesi ile uygun alan ayrımıyla yapılandırılmış kayıtlar arasında fark. Kütüphane saf bir Java uygulaması olarak çalışır, bu da onu kurumsal uygulamalar, arka uç hizmetleri ve manuel müdahale gerektirmeyen güvenilir, otomatik PDF tablo çıkarımı gereken herhangi bir sistem için mükemmel kılar. Popüler Tabula masaüstü uygulamasının arkasındaki motor olup, gazeteciler, araştırmacılar ve dünya çapında veri analistleri tarafından yılların gerçek dünya kullanımıyla kanıtlanmıştır. Akıllı algılama algoritmaları, esnek çıkarma modları ve basit API'si, PDF'lerde sıkışmış tablo verileriyle çalışan herkes için vazgeçilmez bir araç haline getirir.

Tabula-Java ile Başlarken

Lütfen projenize Maven bağımlılığını eklemek için aşağıdaki komutu kullanın.

OpenPDF Maven Bağımlılığı

<dependency>
  <groupId>technology.tabula</groupId>
  <artifactId>tabula</artifactId>
  <version>1.0.5.</version>
</dependency>

Gradle ile Tabula-Java'yı Kurun

implementation 'technology.tabula:tabula:1.0.5' 

Java API ile Temel Tablo Çıkarma

Tabula-Java açık kaynak kütüphanesini kullanmanın en basit yolu, varsayılan algılama algoritmasını kullanarak bir PDF'deki tüm tabloları otomatik olarak tespit etmesine izin vermektir. Bu, net, elektronik tablo benzeri tablolara sahip PDF'lerde iyi çalışır. PDF belgesinden tüm tabloları çıkaran basit bir örnekle başlayalım. Bu örnek temel iş akışını gösterir. PDF'yi Apache PDFBox (Tabula-Java'nın temel PDF motoru) ile yüklüyoruz, bir çıkarma algoritması oluşturuyor ve sayfalar arasında yineleme yapıyoruz.

Java API ile PDF'den Tablo Nasıl Çıkarılır?

import technology.tabula.*;
import technology.tabula.extractors.SpreadsheetExtractionAlgorithm;
import org.apache.pdfbox.pdmodel.PDDocument;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class BasicExtraction {
    public static void main(String[] args) throws IOException {
        // Load the PDF document
        File pdfFile = new File("data_report.pdf");
        PDDocument document = PDDocument.load(pdfFile);
        
        // Create an extraction algorithm
        SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
        
        // Create a page iterator
        ObjectExtractor objectExtractor = new ObjectExtractor(document);
        PageIterator pages = objectExtractor.extract();
        
        // Process each page
        while (pages.hasNext()) {
            Page page = pages.next();
            
            // Extract tables from the page
            List<Table> tables = extractor.extract(page);
            
            // Print each table
            for (Table table : tables) {
                System.out.println("Found table with " + table.getRowCount() + " rows");
                
                // Iterate through rows
                for (List row : table.getRows()) {
                    for (RectangularTextContainer cell : row) {
                        System.out.print(cell.getText() + "\t");
                    }
                    System.out.println();
                }
            }
        }
        
        document.close();
    }
}


Belirli Sayfa Bölgelerinden Tablo Çıkarma

Çoğu zaman, her şeyi çıkarmak istemezsiniz. Sayfadaki belirli bir konumdaki belirli bir tablodan veri almanız gerekebilir. Tabula-Java, koordinatlar kullanarak bir "seçim alanı" tanımlamanıza izin verir. Rectangle sınıfı, PDF koordinat alanını (72 noktanın bir inçe eşit olduğu) kullanarak sayfada belirli bir bölge tanımlar. getArea() yöntemi, çıkarma işleminden önce sayfayı bu bölgeye kırpar, yalnızca belirli bir konumdan veri gerektiğinde doğruluk ve performansı artırır. İşte bu işlemi nasıl gerçekleştireceğinizi gösteren çok faydalı bir örnek.

Java API kullanarak Belirli Sayfa Bölgelerinden Tablo Nasıl Çıkarılır?

import technology.tabula.Rectangle;

public class RegionExtraction {
    public static void extractRegion(String pdfPath) throws IOException {
        File pdfFile = new File(pdfPath);
        PDDocument document = PDDocument.load(pdfFile);
        
        ObjectExtractor objectExtractor = new ObjectExtractor(document);
        Page page = objectExtractor.extract(1);
        
        // Define the region (x, y, width, height)
        // Coordinates are in points (72 points = 1 inch)
        Rectangle region = new Rectangle(50, 100, 500, 400);
        Page subPage = page.getArea(region);
        
        SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
        List<Table> tables = extractor.extract(subPage);
        
        // Process the extracted table
        for (Table table ; tables) {
            System.out.println("Extracted " + table.getRowCount() + " rows from region");
        }
        
        document.close();
    }
}

Java API ile Tabloları CSV'ye Dönüştürme

Yaygın bir kullanım senaryosu, çıkarılan tabloları doğrudan CSV formatına aktararak elektronik tablo uygulamaları veya veritabanlarında kullanmaktır. CSVWriter sınıfı, özel karakterlerin doğru kaçışını ve çok satırlı hücre içeriğinin işlenmesini dahil ederek CSV biçimlendirmesinin tüm karmaşıklığını yönetir. Bu, Tabula-Java'yı CSV girişi bekleyen veri işleme boru hatlarına entegre etmeyi çok basit hale getirir. İşte Java uygulamaları içinde tabloları verimli bir şekilde nasıl ele alacağınızı gösteren bir Java kod örneği.

Java API ile Çıkarılan Tabloları CSV Formatına Nasıl Dışa Aktarılır?

import technology.tabula.writers.CSVWriter;
import java.io.FileWriter;

public class CSVExtraction {
    public static void exportToCSV(String pdfPath, String csvPath) throws IOException {
        File pdfFile = new File(pdfPath);
        PDDocument document = PDDocument.load(pdfFile);
        
        SpreadsheetExtractionAlgorithm extractor = new SpreadsheetExtractionAlgorithm();
        ObjectExtractor objectExtractor = new ObjectExtractor(document);
        Page page = objectExtractor.extract(1);
        
        List<Table< tables = extractor.extract(page);
        
        // Write to CSV file
        if (!tables.isEmpty()) {
            Table table = tables.get(0);
            
            try (FileWriter writer = new FileWriter(csvPath)) {
                CSVWriter csvWriter = new CSVWriter();
                csvWriter.write(writer, table);
            }
        }
        
        document.close();
    }
}

Java API ile Birden Çok Sayfayı İşleme

Gerçek dünyadaki birçok PDF, birden fazla sayfaya yayılmış tablolar içerir. Kütüphane, aynı anda birden fazla sayfayı işleme desteği eklemiş ve geliştiricilerin belgede bulunan tüm sayfalarda dolaşarak tespit edilen tabloları çıkarmalarına ve raporlamalarına olanak tanır. Sayfa numaralandırması 1'den (0 değil) başlar; bu, insanların genellikle sayfa numaralarını referans almasıyla eşleşir.