كيفية استخراج جداول PDF في Java باستخدام GroupDocs.Parser
استخراج الجداول من ملفات PDF هو طلب شائع عندما تحتاج إلى تحويل المستندات الثابتة إلى بيانات منظمة. في هذا الدرس ستتعلم كيفية استخراج الجداول من ملفات PDF باستخدام مكتبة GroupDocs.Parser للـ Java. سنغطي إعداد البيئة، تكوين تخطيط الجدول، وكيفية تصدير جداول PDF إلى CSV للمعالجة اللاحقة. في النهاية، ستكون قادرًا على دمج استخراج الجداول القوي في أي خط أنابيب بيانات مبني على Java.
إجابات سريعة
- ما هي المكتبة الأساسية؟ GroupDocs.Parser للـ Java
- هل يمكنني استخراج الجداول من ملفات PDF الممسوحة ضوئيًا؟ فقط بعد OCR؛ راجع ملاحظة “استخراج جداول PDF الممسوحة ضوئيًا” أدناه
- هل أحتاج إلى ترخيص؟ ترخيص تجريبي يعمل للتطوير؛ الترخيص الكامل مطلوب للإنتاج
- ما نسخة Java المطلوبة؟ Java 8 أو أعلى
- هل تدعم المعالجة الدفعة؟ نعم – الـ API مُحسّنة لاستخراج واسع النطاق
ما هو استخراج جداول PDF في Java؟
استخراج جداول PDF في Java هو عملية تحديد هياكل الجداول داخل ملف PDF برمجيًا، تفسير حدود الخلايا، واسترجاع النص بتنسيق قابل للقراءة آليًا مثل CSV أو Excel. يتيح ذلك تحليلات لاحقة، تقارير، أو مهام ترحيل دون الحاجة إلى النسخ واللصق اليدوي.
لماذا نستخدم GroupDocs.Parser لاستخراج جداول PDF في Java؟
GroupDocs.Parser يقدم اكتشاف تخطيط دقيق لأكثر من 50 + تنسيق إدخال وإخراج ويمكنه معالجة ملفات PDF مئات الصفحات مع الحفاظ على استهلاك الذاكرة أقل من 200 MB. يدعم وظائف الدُفعات، يوفر تبعية Maven بسيطة، ويتكامل بسلاسة مع GroupDocs OCR لسيناريوهات المستندات الممسوحة ضوئيًا.
المتطلبات المسبقة
قبل أن نبدأ، تأكد من توفر ما يلي:
- Java 8+ مثبت ومُكوَّن في بيئة التطوير المتكاملة أو أداة البناء الخاصة بك.
- Maven لإدارة التبعيات.
- الوصول إلى ترخيص GroupDocs.Parser (تجريبي أو كامل).
المكتبات والتبعيات المطلوبة
ستحتاج إلى:
- مكتبة GroupDocs.Parser للـ Java (الإصدار 25.5 أو أحدث).
- Maven مثبت على نظامك لإدارة التبعيات.
إعداد البيئة
تأكد من إعداد بيئة التطوير بإصدار Java متوافق (Java 8 أو أعلى).
المتطلبات المعرفية
فهم أساسي لبرمجة Java ومعرفة بالتعامل مع الملفات في Java سيكون مفيدًا.
إعداد GroupDocs.Parser للـ Java
لبدء استخدام GroupDocs.Parser، دمجه في مشروعك كما يلي:
إعداد Maven
أضف التكوين التالي إلى ملف pom.xml الخاص بك لتضمين GroupDocs.Parser كاعتماد:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
تحميل مباشر
بدلاً من ذلك، حمّل أحدث نسخة من GroupDocs.Parser للـ Java من GroupDocs releases.
الحصول على الترخيص
ابدأ برخصة تجريبية مجانية، احصل على ترخيص مؤقت، أو اشترِ ترخيصًا كاملاً. زر صفحة ترخيص GroupDocs للمزيد من التفاصيل.
التهيئة الأساسية والإعداد
قم بتهيئة GroupDocs.Parser في تطبيق Java الخاص بك كما يلي:
import com.groupdocs.parser.Parser;
public class DocumentParser {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
// Ready to perform operations on the document
} catch (Exception e) {
System.err.println("Error creating Parser instance: " + e.getMessage());
}
}
}
دليل التنفيذ
دعنا نستعرض كل ميزة تحتاج إلى إتقان كيفية استخراج الجداول من ملف PDF.
الميزة 1: تحليل المستند باستخدام GroupDocs
نظرة عامة
للتفاعل مع مستند PDF، أنشئ مثيلًا من الفئة Parser.Parser هي الفئة الرئيسية لقراءة محتوى PDF في GroupDocs.Parser. هذا يتيح عمليات متعددة على المستند.
إنشاء مثيل Parser
الفئة Parser هي نقطة الدخول لقراءة محتوى PDF في GroupDocs.Parser. تقوم بتحميل المستند إلى الذاكرة وتوفر طرقًا لاستخراج النص، الجداول، والهياكل الأخرى.
import com.groupdocs.parser.Parser;
public class CreateParserInstance {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
// Document is ready for operations
} catch (Exception e) {
System.err.println("Error creating Parser instance: " + e.getMessage());
}
}
}
الميزة 2: فحص قدرة استخراج الجداول
نظرة عامة
قبل استخراج الجداول، تحقق من أن PDF يدعم استخراج الجداول.
التحقق من دعم الجداول
طريقة hasTables() تُعيد قيمة منطقية تشير إلى ما إذا كان PDF المحمّل يحتوي على بيانات جدولة قابلة للكشف.hasTables() تتحقق مما إذا كان المستند يحتوي على أي جداول.
import com.groupdocs.parser.Parser;
public class CheckTableSupport {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
try (Parser parser = new Parser(filePath)) {
boolean isTablesSupported = parser.getFeatures().isTables();
if (!isTablesSupported) {
System.out.println("Document doesn't support tables extraction.");
}
} catch (Exception e) {
System.err.println("Error checking table extraction capability: " + e.getMessage());
}
}
}
الميزة 3: تكوين تخطيط الجدول
نظرة عامة
تكوين تخطيط جداولك يمكن أن يعزز الدقة في استخراج البيانات.
إعداد تخطيط الجدولTemplateTableLayout يحدد عرض الأعمدة المتوقعة وارتفاعات الصفوف.TemplateTableLayout يحدد عرض الأعمدة المخصص وارتفاعات الصفوف لاكتشاف الجداول. ضبط هذه القيم يساعد المحرك على محاذاة حدود الخلايا مع الشبكة البصرية.
import com.groupdocs.parser.templates.TemplateTableLayout;
import java.util.Arrays;
public class ConfigureTableLayout {
public static void main(String[] args) {
final double[] columnWidths = {50.0, 95.0, 275.0, 415.0, 485.0, 545.0};
final double[] rowHeights = {325.0, 340.0, 365.0, 395.0};
TemplateTableLayout layout = new TemplateTableLayout(
Arrays.asList(columnWidths),
Arrays.asList(rowHeights));
}
}
الميزة 4: إعداد خيارات استخراج الجداول
نظرة عامة
قم بإعداد خيارات استخراج الجداول بتكوينات محددة لتحسين دقة الاستخراج.
تكوين خيارات الاستخراجTableExtractionOptions يتيح لك تحديد ما إذا كنت تريد تضمين صفوف العنوان، دمج الخلايا، أو تجاهل الصفوف الفارغة.TableExtractionOptions يضبط سلوك الاستخراج مثل تضمين العناوين أو دمج الخلايا.
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.templates.TemplateTableLayout;
public class SetExtractionOptions {
public static void main(String[] args) {
TemplateTableLayout layout = new TemplateTableLayout(
Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}),
Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0}));
PageTableAreaOptions options = new PageTableAreaOptions(layout);
}
}
الميزة 5: استخراج الجداول من المستند
نظرة عامة
استخراج الجداول باستخدام الخيارات المكوَّنة ومعالجتها حسب الحاجة.
عملية الاستخراج
طريقة getTables() تُعيد مجموعة من كائنات Table، كل منها يمثل جدولًا مكتشفًا في الصفحات المطلوبة.getTables() تسترجع جميع الجداول المكتشفة من المستند.Table يمثل جدولًا مستخرجًا يحتوي على صفوف وخلايا.
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.data.PageTableArea;
public class ExtractTables {
public static void main(String[] args) {
final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
PageTableAreaOptions options = new PageTableAreaOptions(/* layout from previous feature */);
try (Parser parser = new Parser(filePath)) {
Iterable<PageTableArea> tables = parser.getTables(options);
for (PageTableArea table : tables) {
// Process each table as needed
}
} catch (Exception e) {
System.err.println("Error extracting tables: " + e.getMessage());
}
}
}
الميزة 6: التكرار على صفوف وأعمدة الجدول
نظرة عامة
بعد الاستخراج، قم بالتكرار على الصفوف والأعمدة للوصول إلى الخلايا الفردية.
التكرار والوصول إلى الخلايا
كل Table يوفر getRows() وكل Row يوفر getCells(). يمكنك قراءة نص الخلية عبر getText() وكتابته إلى CSV أو أي تنسيق آخر.Row يمثل صفًا واحدًا داخل Table.getRows() تُعيد قائمة الصفوف في الجدول.getCells() تُعيد خلايا الصف.getText() تسترجع المحتوى النصي للخلية.
import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.PageTableAreaCell;
public class IterateTables {
public static void main(String[] args) {
PageTableArea table = /* reference to a specific PageTableArea object */;
for (int row = 0; row < table.getRowCount(); row++) {
for (int column = 0; column < table.getColumnCount(); column++) {
PageTableAreaCell cell = table.getCell(row, column);
if (cell != null) {
// Process the cell text as needed
}
}
}
}
}
المشكلات الشائعة والحلول
| المشكلة | لماذا يحدث | نصيحة احترافية |
|---|---|---|
| عدم إرجاع أي جداول | PDF ممسوح ضوئيًا (مستند صورة) | شغّل OCR أولًا أو استخدم GroupDocs OCR قبل التحليل. |
| محاذاة الأعمدة غير صحيحة | إحداثيات التخطيط غير دقيقة | اضبط قيم TemplateTableLayout لتطابق الشبكة البصرية. |
| ارتفاع استهلاك الذاكرة في ملفات PDF الكبيرة | Parser يحمل المستند بالكامل في الذاكرة | عالج الصفحات على دفعات وأغلق Parser بعد كل دفعة. |
الأسئلة المتكررة
1. هل يمكنني استخراج الجداول من ملفات PDF الممسوحة ضوئيًا أم فقط من ملفات PDF الرقمية؟
الإجابة: GroupDocs.Parser يعمل أساسًا مع ملفات PDF الرقمية القابلة للتحديد التي تحتوي على نص مدمج. بالنسبة لملفات PDF الممسوحة ضوئيًا، ستحتاج إلى تشغيل OCR أولًا—إما باستخدام GroupDocs OCR أو محرك OCR آخر—حتى يصبح النص قابلًا للبحث قبل استخراج الجداول.
2. كيف أتعامل مع الجداول ذات التخطيطات المعقدة أو الخلايا المدمجة؟
الإجابة: خصص TemplateTableLayout بإحداثيات دقيقة للأعمدة والصفوف، أو فعّل علم mergeCells في TableExtractionOptions. قد يتطلب ما بعد المعالجة تفسير المناطق المدمجة بشكل صحيح.
3. هل GroupDocs.Parser مناسب للمستندات الكبيرة أو المعالجة الدفعية؟
الإجابة: نعم. تم بناء المكتبة لتدعم سيناريوهات عالية الإنتاجية ويمكنها معالجة ملفات PDF بمئات الصفحات مع الحفاظ على استهلاك الذاكرة منخفضًا. استخدم خيارات نطاق الصفحات وأغلق مثيل Parser بعد كل دفعة لتحقيق أقصى أداء.
4. هل يمكنني تصدير بيانات الجداول المستخرجة إلى صيغ مثل CSV أو Excel؟
الإجابة: GroupDocs.Parser يُعيد بيانات الجداول الخام (صفوف وخلايا). يمكنك بسهولة كتابة هذه البيانات إلى CSV باستخدام OpenCSV أو إلى Excel باستخدام Apache POI. هذا يحقق حالة export pdf tables csv دون الحاجة إلى ترخيص إضافي.
5. هل هناك دعم لاستخراج الجداول من صفحات متعددة مرة واحدة؟
الإجابة: بالتأكيد. استدعِ parser.getTables(pageOptions) مع نطاق صفحات أو كرّر عبر جميع الصفحات. الـ API يجمع الجداول عبر الصفحات، مما يتيح لك بناء مجموعة بيانات موحدة.
الخلاصة
يصبح استخراج جداول PDF في Java أمرًا بسيطًا مع GroupDocs.Parser. من خلال تهيئة Parser، التأكد من دعم الجداول، تكوين التخطيط وخيارات الاستخراج، والتكرار على كائنات Table الناتجة، يمكنك تحويل ملفات PDF الثابتة إلى ملفات CSV أو Excel منظمة. تصميم المكتبة الموجه للأداء، ودعمها لأكثر من 50 تنسيقًا، وتكاملها السلس مع OCR يجعلها خيارًا مثاليًا لأتمتة الفواتير، ترحيل البيانات، وأنابيب التحليل الضخمة. باتباع الخطوات المذكورة أعلاه، أنت جاهز لدمج استخراج الجداول الموثوق به في أي تطبيق Java.
آخر تحديث: 2026-09-17
تم الاختبار مع: GroupDocs.Parser 25.5 (Java)
المؤلف: GroupDocs