1. Produkti
  2.   PDF
  3.   Java
  4.   Tabula-Java
 
  

Bezmaksas Java PDF bibliotēka tabulu izguvei no PDF

Atvērtā koda Java API, kas programmatiski izguvu tabulas no PDF failiem. Tas var viegli pārvērst izguvētās tabulas CSV formātā un pārveidot bloķētas PDF tabulas strukturētos datu formātos.

Kas ir Tabula-Java?

PDF faili ir visur biznesa pasaulē — ziņojumi, rēķini, pētījumu raksti un finanšu pārskati. Tomēr pastāv neatlaidīga problēma: tabulu datu izguve no šiem dokumentiem ir slaveni grūti. Kopēšana un ielīmēšana bieži noved pie bojātiem datiem, un manuāla pārrakstīšana ir garlaicīga un pakļauta kļūdām. Šeit nāk Tabula-Java. Tabula-Java ir spēcīga atvērtā koda bibliotēka, kas programmatiski izvelk tabulas no PDF dokumentiem. Balstīta uz stabilām PDF apstrādes pamatiem, šī Java bibliotēka pārveido slēgtas PDF tabulas strukturētos datu formātos, ar kuriem patiešām var strādāt. Neatkarīgi no tā, vai veidojat datu cauruļvadu, automatizējat pārskatu apstrādi vai vienkārši esat noguris cīņā ar PDF tabulām, Tabula-Java piedāvā elegantu risinājumu.

Neskatoties uz vispārīgiem PDF parsētājiem, kas traktē visu kā nestrukturētu tekstu, Tabula-Java saprot tabulu struktūras. Tā atpazīst rindas, kolonnas un šūnas, saglabājot attiecības starp datu punktiem. Šī atšķirība ir būtiska — atšķirība starp \"John 42 Engineer\" kā teksta bloku un strukturētiem ierakstiem ar pareizu lauku atdalīšanu. Bibliotēka darbojas kā tīra Java implementācija, padarot to par ideālu risinājumu uzņēmumu lietojumprogrammām, aizmugures pakalpojumiem un jebkurai sistēmai, kur nepieciešama uzticama, automatizēta PDF tabulu izguve bez manuālas iejaukšanās. Tā ir dzinējs aiz populārās Tabula darbvirsmas lietotnes, pierādīts gadu garumā reālās pasaules lietošanā žurnālistu, pētnieku un datu analītiķu vidū visā pasaulē. Tās inteliģētie noteikšanas algoritmi, elastīgās izguves režīmi un vienkāršais API padara to par neaizstājamu rīku ikvienam, kas strādā ar tabulveida datiem, kas iesprostoti PDF failos.

Previous Next

Sākšana ar Tabula-Java

Lūdzu, izmantojiet šādu komandu, lai pievienotu Maven atkarību savam projektam.

OpenPDF Maven atkarība

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

Instalēt Tabula-Java, izmantojot Gradle

implementation 'technology.tabula:tabula:1.0.5' 

Pamata tabulu izguve, izmantojot Java API

Visvienkāršākais veids, kā izmantot atvērtā koda Tabula-Java bibliotēku, ir ļaut tai automātiski noteikt visas tabulas PDF dokumentā, izmantojot tās noklusējuma noteikšanas algoritmu. Tas labi darbojas PDF failiem ar skaidrām, izklājlapas veida tabulām. Sāksim ar vienkāršu piemēru, kas izvelk visas tabulas no PDF dokumenta. Šis piemērs demonstrē pamata darba plūsmu. Mēs ielādējam PDF, izmantojot Apache PDFBox (Tabula-Java pamatā esošo PDF dzini), izveidojam izguves algoritmu un iterējam cauri lapām.

Kā izvilkt tabulu no PDF, izmantojot Java API?

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


Izgūt tabulu no konkrētām lapas vietām

Bieži vien jūs nevēlaties izvilkt visu. Jums var būt vajadzīgi dati no konkrētas tabulas konkrētā vietā lapā. Tabula-Java ļauj definēt "atlases apgabalu" izmantojot koordinātas. Rectangle klase definē konkrētu apgabalu lapā, izmantojot PDF koordinātu telpu (kur 72 punkti ir vienas collas). Metode getArea() apgriež lapu uz šo reģionu pirms izguves, uzlabojot precizitāti un veiktspēju, kad jums vajag tikai datus no konkrētas vietas. Šeit ir ļoti noderīgs piemērs, kas parāda, kā veikt šo darbību.

Kā izvilkt tabulu no konkrētiem lapas reģioniem, izmantojot Java API?

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

Tabulu konvertēšana uz CSV, izmantojot Java API

Bieži sastopams lietojuma gadījums ir eksportēt izvilktās tabulas tieši CSV formātā, lai izmantotu izklājlapu lietojumprogrammās vai datu bāzēs. CSVWriter klase apstrādā visu CSV formatēšanas sarežģītību, ieskaitot pareizu īpašo rakstzīmju aizbēgšanu un vairāku rindu šūnu satura apstrādi. Tas padara Tabula-Java integrēšanu datu apstrādes cauruļvados, kas sagaida CSV ievadi, vienkāršu. Šeit ir Java koda piemērs, kas parāda, kā efektīvi apstrādāt tabulas Java lietojumprogrammās.

Kā eksportēt izvilktās tabulas CSV formātā, izmantojot Java API?

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

Vairāku lapu apstrāde, izmantojot Java API

Daudzi reālie PDF faili satur tabulas, kas izklātas vairākās lapās. Bibliotēka ir iekļāvusi atbalstu vairāku lapu apstrādei vienlaicīgi un ļauj izstrādātājiem pāriet cauri visām dokumenta lapām, izvelkot un ziņojot par atrastajām tabulām. Lapu numurēšana sākas ar 1 (nevis 0), kas atbilst tam, kā cilvēki parasti atsaucas uz lapu numuriem.

 Latviski