چگونه فایل pdf را در Java بخوانیم

PDF متداول ترین فرمت سند دیجیتال است. ما می توانیم اسناد PDF را تجزیه کنیم و متون و تصاویر را به صورت برنامه نویسی از آن ها استخراج کنیم. این امر می تواند در چندین مورد مفید باشد، از جمله تحلیل متن، بازیابی اطلاعات، تبدیل اسناد و غیره. در این مقاله، یاد می گیریم که چگونه متون و تصاویر را از اسناد PDF با استفاده از Java استخراج کنیم.

موضوعات زیر در این مقاله بررسی خواهد شد:

کتابخانه Java برای استخراج متن و تصاویر از اسناد PDF

برای استخراج متن و تصاویر از اسناد PDF، ما از GroupDocs.Parser for Java API استفاده خواهیم کرد. این API امکان استخراج متن خام، فرمت شده و ساختار یافته، متادیتا و تصاویر از فایل‌های فرمت‌های پشتیبانی شده را فراهم می‌کند. لطفاً یا دانلود کنید JAR این API را یا کد پیکربندی pom.xml زیر را در یک برنامه Java مبتنی بر Maven اضافه کنید.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>22.3</version> 
</dependency>

استخراج متن PDF با Java

ما می‌توانیم هر سند PDF را تجزیه کنیم و متن را با دنبال کردن مراحل زیر استخراج کنیم:

  • اولا، فایل PDF را با استفاده از کلاس Parser بارگذاری کنید.
  • سپس متد Parser.getText() را برای استخراج متن از سند بارگذاری شده فراخوانی کنید.
  • سپس، نتایج را در شیء کلاس TextReader بگیرید.
  • در نهایت، متد TextReader.readToEnd() را برای خواندن تمام کاراکترها از موقعیت فعلی تا انتهای خواننده متن فراخوانی کرده و آن‌ها را به عنوان یک رشته واحد بازمی‌گرداند.

کد نمونه زیر نشان می‌دهد که چگونه می‌توان متن را از یک فایل PDF با استفاده از Java استخراج کرد.

// این مثال کد نشان می‌دهد که چگونه یک PDF را تجزیه و متن را استخراج کنیم.
// یک نمونه از کلاس Parser ایجاد کنید
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Extract a text into the reader
try (TextReader reader = parser.getText()) {
    // Print a text from the document
    // اگر استخراج متن پشتیبانی نشود، یک خواننده null است
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
متن را از اسناد PDF با استفاده از Java استخراج کنید

از بین بردن متن از اسناد PDF با استفاده از جاوا

از سند PDF یک صفحه خاص متن استخراج کنید با استفاده از Java

شما می‌توانید یک سند PDF را پردازش کرده و متن را از یک صفحه خاص استخراج کنید با پیروی از مراحل ساده‌ای که در زیر ذکر شده است:

  • اولا، فایل PDF را با استفاده از کلاس Parser بارگذاری کنید.
  • در مرحله بعد، اطلاعات مدرک را با استفاده از Parser.getDocumentInfo() روش به دست آورید.
  • سپس، بررسی کنید که IDocumentInfo.getPageCount() صفر نیست.
  • پس از آن، با استفاده از اندیس صفحه، متد Parser.getText() را برای استخراج متن از آن صفحه خاص فراخوانی کنید و نتایج را در شی کلاس TextReader دریافت کنید.
  • در نهایت، نتایج را با فراخوانی روش TextReader.readToEnd() برای خواندن متن استخراج شده نشان دهید.

مثال کد زیر نشان می‌دهد که چگونه می‌توان متن را از یک صفحه خاص با استفاده از Java استخراج کرد.

// این نمونه کد نشان می‌دهد که چگونه یک PDF را تجزیه کرده و متن را از یک صفحه خاص استخراج کنید.
// یک نمونه از کلاس Parser ایجاد کنید
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// Get the document info
IDocumentInfo documentInfo = parser.getDocumentInfo();

// بررسی کنید که آیا سند صفحات دارد
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// Extract a text into the reader
try (TextReader reader = parser.getText(1)) {
    // Print a text from the document
    // اگر استخراج متن پشتیبانی نمی‌شود، یک خواننده null است
    System.out.println(reader.readToEnd());
}

API همچنین این امکان را فراهم می‌کند که بررسی کنیم آیا سند از ویژگی استخراج متن پشتیبانی می‌کند یا خیر. برای این منظور، می‌توانیم از خاصیت Parser.getFeatures().isText() استفاده کنیم. لطفاً درباره features supported بیشتر بخوانید.

تصاویر را از PDF استخراج کنید (Java)

ما می‌توانیم هر سند PDF را تجزیه و تحلیل کنیم و با دنبال کردن مراحل زیر، تصاویر را استخراج کنیم:

  • اولا، فایل PDF را با استفاده از کلاس Parser بارگذاری کنید.
  • سپس، متد Parser.getImages() را صدا بزنید و مجموعه‌ای از اشیاء PageImageArea را از سند بارگذاری شده دریافت کنید.
  • سپس، بررسی کنید که آیا مجموعه ناچار نیست.
  • پس از آن، بر روی تمام تصاویری که پیدا شده‌اند، تکرار کنید.
  • Finally, show images details.

کد نمونه زیر نشان می‌دهد که چگونه جزئیات تصاویر را از یک فایل PDF با استفاده از Java دریافت کنیم.

// این مثال کد نشان می‌دهد که چگونه یک PDF را تجزیه کرده و تصاویر را دریافت کنیم.
// یک نمونه از کلاس Parser ایجاد کنید
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extract images
Iterable<PageImageArea> images = parser.getImages();

// بررسی کنید که آیا استخراج تصاویر پشتیبانی می‌شود
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// تکرار روی تصاویر
for (PageImageArea image : images) {
    // یک نمایه صفحه، مستطیل و نوع تصویر را چاپ کنید:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
از اسناد PDF با استفاده از Java تصاویر بگیرید

تصاویر را از اسناد PDF با استفاده از Java دریافت کنید

استخراج تصاویر از صفحه خاصی از یک سند PDF با استفاده از Java

ما می‌توانیم تصاویر را از یک صفحه خاص با دنبال کردن مراحل ساده ذکر شده در زیر استخراج کنیم:

  • اولا، فایل PDF را با استفاده از کلاس Parser بارگذاری کنید.
  • در مرحله بعد، اطلاعات مدرک را با استفاده از Parser.getDocumentInfo() روش به دست آورید.
  • سپس، بررسی کنید که IDocumentInfo.getPageCount() صفر نیست.
  • پس از آن، متد Parser.getImages() را با ایندکس صفحه فراخوانی کنید تا تصاویر را از آن صفحه خاص استخراج کنید.
  • در نهایت، بر روی تمام تصاویری که پیدا شده‌اند تکرار کنید و جزییات را نمایش دهید.

کد نمونه زیر نشان می‌دهد که چگونه می‌توان تصاویر را از یک صفحه خاص با استفاده از Java استخراج کرد.

// این مثال کد نشان می‌دهد که چگونه یک فایل PDF را تجزیه کرده و تصاویر را از یک صفحه خاص استخراج کنیم.
// یک نمونه از کلاس Parser ایجاد کنید
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Get the document info
IDocumentInfo documentInfo = parser.getDocumentInfo();

// بررسی کنید که آیا سند صفحه دارد
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// تصاویر را تکرار کنید
// ما بررسی عدم وجود مقدار را نادیده می‌گیریم زیرا قبلاً پشتیبانی از ویژگی استخراج تصاویر را بررسی کرده‌ایم.
for (PageImageArea image : parser.getImages(pageIndex)) {
  // یک نمایه صفحه، مستطیل و نوع تصویر چاپ کنید:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

تصویرها را با استفاده از Java استخراج و ذخیره کنید.

ما همچنین می‌توانیم تصاویر استخراج شده را با دنبال کردن مراحل زیر ذخیره کنیم:

  • اولا، فایل PDF را با استفاده از کلاس Parser بارگذاری کنید.
  • در مرحله بعد، متد Parser.getImages() را صدا بزنید و مجموعه‌ای از اشیاء PageImageArea را از سند بارگذاری شده دریافت کنید.
  • سپس یک نمونه از کلاس ImageOptions ایجاد کنید و فرمت تصویر را تنظیم کنید.
  • پس از آن، بر روی تمام تصاویری که پیدا شده‌اند، تکرار کنید.
  • Finally, save using the save() method. It takes the output file path and ImageOptions as arguments.

کد نمونه زیر نشان می‌دهد که چگونه تصاویر را استخراج کرده و به فایل‌ها در Java ذخیره کنیم.

// این مثال کد نشان می‌دهد که چگونه تصاویر را از دایرکتوری استخراج کنیم.
// یک نمونه از کلاس Parser ایجاد کنید
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// Extract images from document
Iterable<PageImageArea> images = parser.getImages();

// بررسی کنید آیا استخراج تصاویر پشتیبانی می‌شود
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// گزینه‌هایی برای ذخیره تصاویر در فرمت PNG ایجاد کنید
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// تصویرها را مرور کنید
for (PageImageArea image : images)
{
    // تصویر را در فایل PNG ذخیره کنید
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
تصاویر را با استفاده از Java استخراج و در فایل‌ها ذخیره کنید

تصویرها را استخراج و در فایل‌ها با استفاده از Java ذخیره کنید

یک مجوز رایگان بگیرید

شما می‌توانید بدون محدودیت‌های ارزیابی از API استفاده کنید با درخواست یک مجوز موقت رایگان.

نتیجه گیری

در این مقاله، ما یاد گرفته‌ایم که چگونه:

  • extract all the text from a whole PDF document or specific pages of the document using Java;
  • extract images from a PDF file programmatically;
  • save extracted images on a local disk.

علاوه بر این، می‌توانید اطلاعات بیشتری در مورد API GroupDocs.Parser برای Java با استفاده از documentation بیابید. در صورت هرگونه ابهام، لطفاً با ما از طریق forum تماس بگیرید.

همچنین ببینید