ساخت اسکریپت تبدیل PDF به متن با پایتون

ساخت اسکریپت تبدیل PDF به متن با پایتون

در دنیای امروز، فایل‌های PDF به عنوان یکی از رایج‌ترین فرمت‌ها برای اشتراک‌گذاری و آرشیو اسناد مورد استفاده قرار می‌گیرند. با این حال، گاهی اوقات نیاز است که محتوای این فایل‌ها را به متن قابل ویرایش تبدیل کنیم. این کار می‌تواند برای اهداف مختلفی مانند استخراج اطلاعات، جستجو در متن، یا استفاده از محتوا در برنامه‌های دیگر ضروری باشد. پایتون، با داشتن کتابخانه‌های قدرتمند، ابزاری ایده‌آل برای انجام این کار است. این مقاله به آموزش گام به گام ساخت یک اسکریپت پایتون برای تبدیل PDF به متن می‌پردازد و در دسته بندی ‘اتوماسیون و اسکریپت‌نویسی’ قرار می‌گیرد.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • پایتون نصب شده باشد (نسخه 3.6 یا بالاتر توصیه می‌شود).
  • یک ویرایشگر کد (مانند VS Code، PyCharm، یا Sublime Text).
  • کتابخانه‌های مورد نیاز نصب شده باشند (در ادامه توضیح داده می‌شود).

نصب کتابخانه‌های مورد نیاز

برای تبدیل PDF به متن در پایتون، از کتابخانه‌های مختلفی می‌توان استفاده کرد. دو کتابخانه محبوب و کارآمد عبارتند از:

  • PyPDF2: یک کتابخانه خالص پایتون برای خواندن و نوشتن فایل‌های PDF.
  • pdfminer.six: یک کتابخانه قدرتمند برای استخراج متن از فایل‌های PDF.

برای نصب این کتابخانه‌ها، از دستورات زیر در ترمینال یا خط فرمان استفاده کنید:

pip install PyPDF2
pip install pdfminer.six

روش اول: استفاده از کتابخانه PyPDF2

PyPDF2 یک کتابخانه ساده و آسان برای استفاده است. با این حال، ممکن است در استخراج متن از فایل‌های PDF پیچیده با قالب‌بندی‌های خاص، عملکرد ضعیف‌تری داشته باشد.

کد نمونه

import PyPDF2

def pdf_to_text_pypdf2(pdf_path):
    """
    تبدیل PDF به متن با استفاده از کتابخانه PyPDF2.
    """
    text = ""
    try:
        with open(pdf_path, 'rb') as file:
            reader = PyPDF2.PdfReader(file)
            num_pages = len(reader.pages)

            for page_num in range(num_pages):
                page = reader.pages[page_num]
                text += page.extract_text()
    except FileNotFoundError:
        return "فایل PDF یافت نشد."
    except Exception as e:
        return f"خطا در پردازش فایل PDF: {e}"

    return text

# مثال استفاده
pdf_file = 'example.pdf' # نام فایل PDF خود را جایگزین کنید
extracted_text = pdf_to_text_pypdf2(pdf_file)
print(extracted_text)

توضیحات کد:

  • ابتدا کتابخانه PyPDF2 را وارد می‌کنیم.
  • تابع pdf_to_text_pypdf2 یک مسیر فایل PDF را به عنوان ورودی می‌گیرد.
  • فایل PDF را در حالت باینری ('rb') باز می‌کنیم.
  • یک شیء PdfReader ایجاد می‌کنیم تا فایل PDF را بخوانیم.
  • تعداد صفحات فایل PDF را به دست می‌آوریم.
  • در یک حلقه، تک تک صفحات را پردازش می‌کنیم و متن هر صفحه را با استفاده از متد extract_text() استخراج می‌کنیم.
  • متن استخراج شده از هر صفحه را به متغیر text اضافه می‌کنیم.
  • در نهایت، متن استخراج شده را برمی‌گردانیم.

روش دوم: استفاده از کتابخانه pdfminer.six

pdfminer.six یک کتابخانه قدرتمندتر و پیچیده‌تر از PyPDF2 است. این کتابخانه می‌تواند متن را با دقت بیشتری از فایل‌های PDF پیچیده استخراج کند، اما استفاده از آن کمی دشوارتر است.

کد نمونه

from pdfminer.high_level import extract_text

def pdf_to_text_pdfminer(pdf_path):
    """
    تبدیل PDF به متن با استفاده از کتابخانه pdfminer.six.
    """
    try:
        text = extract_text(pdf_path)
        return text
    except FileNotFoundError:
        return "فایل PDF یافت نشد."
    except Exception as e:
        return f"خطا در پردازش فایل PDF: {e}"

# مثال استفاده
pdf_file = 'example.pdf' # نام فایل PDF خود را جایگزین کنید
extracted_text = pdf_to_text_pdfminer(pdf_file)
print(extracted_text)

توضیحات کد:

  • ابتدا تابع extract_text را از ماژول pdfminer.high_level وارد می‌کنیم.
  • تابع pdf_to_text_pdfminer یک مسیر فایل PDF را به عنوان ورودی می‌گیرد.
  • متن را با استفاده از تابع extract_text استخراج می‌کنیم.
  • در نهایت، متن استخراج شده را برمی‌گردانیم.

مقایسه دو روش

| ویژگی | PyPDF2 | pdfminer.six |
|—|—|—|
| سادگی | بالا | متوسط |
| دقت | متوسط | بالا |
| سرعت | بالا | متوسط |
| پشتیبانی از فایل‌های پیچیده | محدود | گسترده |
| نیاز به دانش تخصصی | کم | زیاد |

بهبود اسکریپت

می‌توان اسکریپت را با افزودن ویژگی‌های زیر بهبود بخشید:

  • مدیریت خطا: افزودن مدیریت خطای دقیق‌تر برای رسیدگی به انواع مختلف خطاها.
  • پشتیبانی از رمز عبور: افزودن قابلیت رمزگشایی فایل‌های PDF محافظت شده با رمز عبور.
  • استخراج اطلاعات خاص: افزودن قابلیت استخراج اطلاعات خاص مانند عنوان، نویسنده، و تاریخ ایجاد.
  • ذخیره متن در فایل: افزودن قابلیت ذخیره متن استخراج شده در یک فایل متنی.
  • پردازش دسته‌ای: افزودن قابلیت پردازش چندین فایل PDF به صورت دسته‌ای.

مثال: ذخیره متن در فایل

def pdf_to_text_and_save(pdf_path, output_path):
    """
    تبدیل PDF به متن و ذخیره آن در یک فایل.
    """
    text = pdf_to_text_pdfminer(pdf_path)
    if text:
        try:
            with open(output_path, 'w', encoding='utf-8') as file:
                file.write(text)
            return f"متن با موفقیت در فایل {output_path} ذخیره شد."
        except Exception as e:
            return f"خطا در ذخیره فایل: {e}"
    else:
        return "متن قابل استخراج نبود."

# مثال استفاده
pdf_file = 'example.pdf'
output_file = 'output.txt'
result = pdf_to_text_and_save(pdf_file, output_file)
print(result)

نتیجه‌گیری

در این مقاله، نحوه ساخت یک اسکریپت پایتون برای تبدیل PDF به متن را با استفاده از دو کتابخانه محبوب PyPDF2 و pdfminer.six آموزش دادیم. هر دو روش مزایا و معایب خود را دارند و انتخاب روش مناسب بستگی به نیازها و پیچیدگی فایل‌های PDF شما دارد. با استفاده از این اسکریپت‌ها و افزودن ویژگی‌های بیشتر، می‌توانید فرآیند استخراج متن از فایل‌های PDF را به طور خودکار انجام دهید و در زمان و تلاش خود صرفه‌جویی کنید. این دانش در زمینه اتوماسیون و اسکریپت‌نویسی بسیار کاربردی است و می‌تواند در پروژه‌های مختلف مورد استفاده قرار گیرد.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *