PDF-lərdən Cədvəlləri Çıxarmaq üçün Pulsuz Java PDF Kitabxanası
Proqramlı şəkildə PDF fayllarından cədvəlləri çıxaran Açıq Mənbə Java API. O, çıxarılan cədvəlləri asanlıqla CSV-ə çevirə və kilidlənmiş PDF cədvəllərini strukturlaşdırılmış məlumat formatlarına çevirə bilir.
Tabula-Java nədir?
PDF faylları iş dünyasında hər yerdə mövcuddur—hesabatlar, fakturalar, elmi məqalələr və maliyyə hesabatları. Lakin davamlı bir problem var: bu sənədlərdən cədvəl məlumatlarını çıxarmaq çox çətindir. Kopyalama‑yapışdırma tez-tez pozulmuş məlumatlarla nəticələnir və əl ilə yenidən yazmaq yorucu və səhvlərə meyllidir. Burada Tabula-Java işə yarayır. Tabula-Java, PDF sənədlərindən proqram vasitəsilə cədvəlləri çıxaran güclü açıq mənbə kitabxanasıdır. Sərt PDF emalı əsaslarına qurulmuş bu Java kitabxanası, kilidlənmiş PDF cədvəllərini faktiki işləyə biləcəyiniz strukturlaşdırılmış məlumat formatlarına çevirir. İstər məlumat boru kəmərləri qurursunuz, istər hesabat emalını avtomatlaşdırırsınız, ya da sadəcə PDF cədvəlləri ilə mübarizədən yorulmusunuz, Tabula-Java zərif bir həll təklif edir.
Ümumi PDF parserləri kimi hər şeyi strukturlaşdırılmamış mətn kimi qəbul edən Tabula-Java isə cədvəl strukturlarını başa düşür. O, sətirləri, sütunları və hüceyrələri tanıyır, məlumat nöqtələri arasındakı əlaqələri qoruyur. Bu fərq vacibdir — \"John 42 Engineer\" mətn blokunu almaq ilə düzgün sahə ayrımı olan strukturlaşdırılmış qeydlər arasındakı fərq. Kitabxana təmiz Java tətbiqi kimi işləyir, bu da onu müəssisə tətbiqləri, arxa plan xidmətləri və əl ilə müdaxilə olmadan etibarlı, avtomatlaşdırılmış PDF cədvəl çıxarışı tələb edən hər hansı sistem üçün mükəmməl edir. Bu, məşhur Tabula masaüstü tətbiqinin arxasındakı mühərrikdir, jurnalistlər, tədqiqatçılar və dünya üzrə məlumat analitikləri tərəfindən illərlə real istifadəsi ilə sübut olunmuşdur. Onun ağıllı aşkarlama alqoritmləri, elastik çıxarış rejimləri və sadə API‑si PDF‑lərdə tutulan cədvəl məlumatları ilə işləyən hər kəs üçün vacib bir vasitədir.
Tabula-Java ilə Başlamaq
Layihənizə Maven asılılığını əlavə etmək üçün aşağıdakı əmri istifadə edin.
OpenPDF Maven Asılılığı
<dependency>
<groupId>technology.tabula</groupId>
<artifactId>tabula</artifactId>
<version>1.0.5.</version>
</dependency>
Tabula-Java-nı Gradle vasitəsilə Quraşdırın
implementation 'technology.tabula:tabula:1.0.5' Java API vasitəsilə Əsas Cədvəl Çıxarışı
Open source Tabula-Java kitabxanasını istifadə etməyin ən sadə yolu, onun standart aşkarlama alqoritmini istifadə edərək PDF-dəki bütün cədvəlləri avtomatik olaraq aşkarlamasına icazə verməkdir. Bu, aydın, cədvəl-oxşar cədvəlləri olan PDF-lər üçün yaxşı işləyir. Gəlin PDF sənədindən bütün cədvəlləri çıxaran sadə bir nümunə ilə başlayaq. Bu nümunə əsas iş axınını nümayiş etdirir. PDF-i Apache PDFBox (Tabula-Java-nın əsas PDF mühərriki) ilə yükləyirik, çıxarış alqoritmi yaradırıq və səhifələr arasında iterasiya edirik.
Java API vasitəsilə PDF-dən Cədvəli necə çıxarmaq olar?
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();
}
}
Müəyyən Səhifə Bölgələrindən Cədvəl Çıxarmaq
Tez-tez, hər şeyi çıxarmaq istəmirsiniz. Səhifədə müəyyən bir yerdəki konkret cədvəldən məlumat lazım ola bilər. Tabula-Java koordinatlardan istifadə edərək \"seçim sahəsi\" təyin etməyə imkan verir. Rectangle sinifi PDF koordinat məkanını (72 nöqtənin bir düymə bərabər olduğu) istifadə edərək səhifədə konkret bir sahəni müəyyən edir. getArea() metodu çıxarışdan əvvəl səhifəni bu bölgəyə kəsir, yalnız müəyyən bir yerdən məlumat lazım olduqda dəqiqliyi və performansı artırır. Budur bu əməliyyatı necə yerinə yetirəcəyinizi göstərən çox faydalı bir nümunə.
Java API istifadə edərək müəyyən səhifə bölgələrindən Cədvəli necə çıxarmaq olar?
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();
}
}
Cədvəlləri Java API vasitəsilə CSV-yə Çevirmək
Ümumi bir istifadə nümunəsi çıxarılan cədvəllərin birbaşa CSV formatına ixrac edilməsi və bu formatın elektron cədvəl proqramları və ya verilənlər bazalarında istifadəsidir. CSVWriter sinifi CSV formatlaşdırmasının bütün mürəkkəbliyini, o cümlədən xüsusi simvolların düzgün qaçırılmasını və çoxsətirli hüceyrə məzmununun idarə edilməsini idarə edir. Bu, Tabula-Java-nı CSV girişi gözləyən məlumat emalı boru kəmərlərinə inteqrasiya etməyi asanlaşdırır. Budur, Java tətbiqlərində cədvəlləri səmərəli şəkildə necə idarə edəcəyinizi göstərən bir Java kod nümunəsi.
Java API vasitəsilə çıxarılan Cədvəlləri CSV formatına necə ixrac etmək olar?
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 vasitəsilə Bir neçə Səhifəni Emal Etmək
Bir çox real dünya PDF-lərində cədvəllər bir neçə səhifəyə yayılmışdır. Kitabxana eyni anda bir neçə səhifəni emal etmək üçün dəstək əlavə edib və inkişaf etdiricilərə sənəddəki bütün səhifələr arasında iterasiya etməyə, tapılan cədvəlləri çıxarmağa və hesabat verməyə imkan verir. Səhifə nömrələnməsi 1-dən (0-dan deyil) başlayır, bu da insanların adətən səhifə nömrələrinə istinad etmə tərzinə uyğundur.