1. Termékek
  2.   PDF
  3.   Java
  4.   Tabula-Java
 
  

Ingyenes Java PDF könyvtár a PDF-ekből történő táblázatkinyeréshez

Nyílt forráskódú Java API, amely programozott módon kinyeri a táblázatokat PDF-fájlokból. Könnyedén konvertálja a kinyert táblázatokat CSV-be, és a zárolt PDF-táblázatokat strukturált adatformátumokká alakítja.

Mi az a Tabula-Java?

PDF fájlok mindenhol jelen vannak az üzleti világban—jelentések, számlák, kutatási anyagok és pénzügyi kimutatások. De egy állandó probléma van: a táblázatos adatok kinyerése ezekből a dokumentumokból hírhedten nehéz. A másolás-beillesztés gyakran torz adatokat eredményez, és a kézi újraírás fárasztó és hibára hajlamos. Itt jön képbe a Tabula-Java. A Tabula-Java egy erőteljes nyílt forráskódú könyvtár, amely programozottan nyeri ki a táblázatokat PDF dokumentumokból. Szilárd PDF feldolgozási alapokra építve ez a Java könyvtár a lezárt PDF táblázatokat strukturált adatformátumokká alakítja, amelyekkel valóban dolgozhatsz. Akár adatcsővezetékeket építesz, jelentésfeldolgozást automatizálsz, vagy egyszerűen csak belefáradtál a PDF táblázatokkal való küzdelembe, a Tabula-Java elegáns megoldást kínál.

Az általános PDF-elemzőkkel, amelyek mindent strukturálatlan szövegként kezelnek, ellentétben a Tabula-Java érti a táblázatszerkezeteket. Felismeri a sorokat, oszlopokat és cellákat, megőrizve az adatpontok közötti kapcsolatokat. Ez a különbség kulcsfontosságú – a "John 42 Engineer" szöveges tömb és a megfelelő mezőelválasztással rendelkező strukturált rekordok közötti eltérés. A könyvtár tisztán Java megvalósításként működik, így tökéletes vállalati alkalmazásokhoz, háttérszolgáltatásokhoz és bármely rendszerhez, ahol megbízható, automatizált PDF-táblázat kinyerésre van szükség manuális beavatkozás nélkül. Ez a motor a népszerű Tabula asztali alkalmazás mögött áll, amelyet évek óta a valós világban használó újságírók, kutatók és adat-elemzők világszerte bizonyítottak. Az intelligens detektáló algoritmusai, a rugalmas kinyerési módok és az egyszerű API-ja elengedhetetlen eszközzé teszi mindenki számára, aki a PDF-ekben rekedt táblázati adatokkal dolgozik.

Previous Next

Tabula-Java használatának megkezdése

Kérjük, használja a következő parancsot a Maven függőség hozzáadásához a projektjébe.

OpenPDF Maven függőség

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

Tabula-Java telepítése Gradle segítségével

implementation 'technology.tabula:tabula:1.0.5' 

Alapvető táblázatkinyerés Java API-n keresztül

A nyílt forráskódú Tabula-Java könyvtár legkönnyebb használati módja, ha hagyjuk, hogy automatikusan felismerje a PDF-ben lévő összes táblázatot az alapértelmezett detektáló algoritmusával. Ez jól működik olyan PDF-eknél, amelyekben egyértelmű, táblázat-szerű adatok vannak. Kezdjünk egy egyszerű példával, amely kinyeri az összes táblázatot egy PDF-dokumentumból. Ez a példa bemutatja az alapvető munkafolyamatot. Betöltjük a PDF-et az Apache PDFBox (a Tabula-Java mögöttes PDF motorja) segítségével, létrehozunk egy kinyerési algoritmust, és végigiterálunk az oldalakon.

Hogyan lehet táblázatot kinyerni PDF-ből Java API-n keresztül?

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();
    }
}


Táblázat kinyerése meghatározott oldalrégiókból

Gyakran nem szükséges mindent kinyerni. Lehet, hogy egy adott táblázat adataira van szükség egy adott helyen az oldalon. A Tabula-Java lehetővé teszi, hogy koordinátákkal definiáljunk egy „kiválasztási területet”. A Rectangle osztály a PDF koordináta-rendszer (ahol 72 pont egy hüvelyknek felel meg) használatával határoz meg egy konkrét területet az oldalon. A getArea() metódus a kinyerés előtt erre a területre vágja le az oldalt, ezáltal javítva a pontosságot és a teljesítményt, ha csak egy adott helyről van szükség adatokra. Íme egy nagyon hasznos példa, amely bemutatja, hogyan hajtható végre ez a művelet.

Hogyan lehet táblázatot kinyerni egy adott oldalrégiókból Java API-val?

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();
    }
}

Táblázatok CSV-be konvertálása Java API-n keresztül

Egy gyakori felhasználási eset az, hogy a kinyert táblázatokat közvetlenül CSV formátumba exportáljuk táblázatkezelő alkalmazások vagy adatbázisok számára. A CSVWriter osztály kezeli a CSV formázás minden bonyolultságát, beleértve a speciális karakterek megfelelő escape-elését és a több soros cellatartalom kezelését. Ez egyszerűvé teszi a Tabula-Java integrálását olyan adatfeldolgozó csővezetékekbe, amelyek CSV bemenetet várnak. Íme egy Java kódrészlet, amely megmutatja, hogyan lehet hatékonyan kezelni a táblázatokat Java alkalmazásokon belül.

Hogyan lehet a kinyert táblázatokat CSV formátumba exportálni Java API-val?

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();
    }
}

Több oldal feldolgozása Java API-n keresztül

Sok valós PDF több oldalon elterülő táblázatot tartalmaz. A könyvtár támogatja a több oldal egyidejű feldolgozását, és lehetővé teszi a fejlesztők számára, hogy végigmenjenek a dokumentum összes oldalán, kinyerve és jelentve a talált táblázatokat. Az oldalszámozás 1‑től kezdődik (nem 0), ami megfelel annak, ahogyan az emberek általában hivatkoznak az oldalszámokra.

 Magyar