FA-TOOLS — Header Component

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

🚀 مسیر راهنمای جامع تبدیل PDF به متن با پایتون 🚀

شروع کار: فایل‌های PDF شما 📄

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

نصب: `pip install [نام کتابخانه]` 💻

پیاده‌سازی: کدنویسی گام به گام برای باز کردن و استخراج ✍️

نتیجه نهایی: متن استخراج شده 📝، آماده برای استفاده و تحلیل! ✅
مشکل؟ بخش عیب‌یابی سریع رو ببین! 💡

سلام رفیق برنامه‌نویس! حتماً برات پیش اومده که با یک فایل PDF سر و کار داشته باشی و بخوای متنش رو بکشی بیرون تا بتونی روش کار کنی؛ مثلاً برای تحلیل داده، ایندکس کردن، یا حتی کپی پیست ساده. PDF‌ها برای نمایش عالی‌اند، اما وقتی نوبت به استخراج اطلاعات میرسه، می‌تونن حسابی دردسرساز بشن. اما نگران نباش، پایتون مثل همیشه با کتابخانه‌های قدرتمندش این کار رو برامون حسابی راحت کرده. در این مقاله می‌خوایم بهت نشون بدیم چطور با چند خط کد ساده پایتون، جادو کنی و محتوای متنی PDFهات رو استخراج کنی. اگه دنبال ابزارهای بیشتر یا سنیپت‌های کاربردی برنامه‌نویسی هستی، حتماً یه سر به سایتمون بزن.

اگر در حین خوندن مقاله یا اجرای کدها سوالی داشتی، می‌تونی با ما تماس بگیری: 09202232789

چرا باید PDF رو به متن تبدیل کنیم؟

کدهای پایتون برای تبدیل PDF به متن — تصویر 1

شاید فکر کنی خب یه کپی پیست ساده کار رو راه میندازه. اما در دنیای برنامه‌نویسی و کارهای جدی، این روش نه تنها عملی نیست، بلکه عملاً غیرممکنه. دلایل زیادی برای این کار وجود داره:

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

پشنیازها و نصب کتابخانه‌های پایتون

کدهای پایتون برای تبدیل PDF به متن — تصویر 2

قبل از هر چیز، باید مطمئن بشی پایتون روی سیستمت نصبه. توصیه می‌کنم از پایتون 3.6 به بالا استفاده کنی. بعدش، نوبت به نصب کتابخانه‌ها میرسه. ما در اینجا سه تا از معتبرترین و پرکاربردترین کتابخونه‌ها رو معرفی می‌کنیم: PyPDF2، pdfminer.six و pdfplumber.

نصب با pip

برای نصب هر کدوم از اینا، فقط کافیه خط زیر رو توی ترمینال یا Command Prompt اجرا کنی:

pip install PyPDF2
pip install pdfminer.six
pip install pdfplumber

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

کدهای پایتون برای تبدیل PDF به متن — تصویر 3

PyPDF2 یه کتابخونه ساده و کاربردیه که برای کارهای عمومی مثل جدا کردن، ادغام و البته استخراج متن از PDF عالیه. اگه PDFت ساختار پیچیده‌ای نداره و فقط می‌خوای متن خام رو دربیاری، PyPDF2 می‌تونه گزینه خیلی خوبی باشه.

کد نمونه PyPDF2

import PyPDF2

def extract_text_pypdf2(pdf_path):
    """
    متن را از یک فایل PDF با استفاده از PyPDF2 استخراج می‌کند.
    """
    text = ""
    try:
        with open(pdf_path, 'rb') as file:
            reader = PyPDF2.PdfReader(file)
            for page_num in range(len(reader.pages)):
                page = reader.pages[page_num]
                text += page.extract_text() + "n"
        return text
    except Exception as e:
        return f"خطا در استخراج متن: {e}"

# مثال استفاده
pdf_file = "sample.pdf" # نام فایل PDF خود را اینجا قرار دهید
extracted_content = extract_text_pypdf2(pdf_file)
print(extracted_content)

# می‌توانید محتوا را در یک فایل متنی ذخیره کنید
with open("output_pypdf2.txt", "w", encoding="utf-8") as output_file:
    output_file.write(extracted_content)
print("nمتن استخراج شده با PyPDF2 در فایل output_pypdf2.txt ذخیره شد.")

توضیح کد

  • ابتدا کتابخانه PyPDF2 رو وارد می‌کنیم.
  • تابع extract_text_pypdf2 مسیر فایل PDF رو می‌گیره.
  • با open(pdf_path, 'rb') فایل رو در حالت باینری (rb) باز می‌کنیم. rb یعنی “read binary”.
  • یک شی PdfReader ایجاد می‌کنیم که به ما امکان دسترسی به صفحات PDF رو میده.
  • در یک حلقه، روی تمام صفحات PDF حرکت می‌کنیم.
  • با page.extract_text() متن هر صفحه رو استخراج و به متغیر text اضافه می‌کنیم.
  • در نهایت، متن کامل استخراج شده رو برمی‌گردونیم.

مزایا و معایب PyPDF2

مزایا:

  • ساده و سریع برای استفاده‌های عمومی.
  • نصب و راه‌اندازی آسان.
  • مناسب برای PDF‌های با ساختار متنی ساده.

معایب:

  • دقت پایین‌تر در استخراج متن از PDF‌های پیچیده یا اسکن شده.
  • نادیده گرفتن قالب‌بندی (فرمت‌بندی) و ساختار جدول.
  • ممکن است با PDF‌های غیر استاندارد مشکل داشته باشد.

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

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

کد نمونه pdfminer.six

from pdfminer.high_level import extract_text

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

# مثال استفاده
pdf_file = "sample.pdf" # نام فایل PDF خود را اینجا قرار دهید
extracted_content = extract_text_pdfminer(pdf_file)
print(extracted_content)

# می‌توانید محتوا را در یک فایل متنی ذخیره کنید
with open("output_pdfminer.txt", "w", encoding="utf-8") as output_file:
    output_file.write(extracted_content)
print("nمتن استخراج شده با pdfminer.six در فایل output_pdfminer.txt ذخیره شد.")

توضیح کد

  • pdfminer.six یک ماژول high_level داره که کار رو برامون خیلی ساده می‌کنه.
  • با وارد کردن extract_text مستقیماً می‌تونیم ازش استفاده کنیم.
  • فقط کافیه مسیر فایل PDF رو به تابع extract_text بدیم تا تمام متن فایل رو استخراج کنه.
  • این روش بسیار ساده‌تر از PyPDF2 به نظر می‌رسه و در عین حال قدرتمندتره.

مزایا و معایب pdfminer.six

مزایا:

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

معایب:

  • ممکن است برای نصب نیاز به کتابخانه‌های جانبی (مثل CJK) داشته باشد.
  • کار با API سطح پایین‌تر آن کمی پیچیده‌تر است.
  • سرعت آن ممکن است نسبت به PyPDF2 کمی کمتر باشد.

روش سوم: استفاده از pdfplumber

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

کد نمونه pdfplumber

import pdfplumber

def extract_text_pdfplumber(pdf_path):
    """
    متن را از یک فایل PDF با استفاده از pdfplumber استخراج می‌کند.
    """
    text = ""
    try:
        with pdfplumber.open(pdf_path) as pdf:
            for page in pdf.pages:
                text += page.extract_text() + "n"
        return text
    except Exception as e:
        return f"خطا در استخراج متن: {e}"

# مثال استفاده
pdf_file = "sample.pdf" # نام فایل PDF خود را اینجا قرار دهید
extracted_content = extract_text_pdfplumber(pdf_file)
print(extracted_content)

# می‌توانید محتوا را در یک فایل متنی ذخیره کنید
with open("output_pdfplumber.txt", "w", encoding="utf-8") as output_file:
    output_file.write(extracted_content)
print("nمتن استخراج شده با pdfplumber در فایل output_pdfplumber.txt ذخیره شد.")

توضیح کد

  • کتابخانه pdfplumber رو وارد می‌کنیم.
  • با pdfplumber.open(pdf_path) as pdf فایل PDF رو باز می‌کنیم. این روش مشابه with open() در پایتون هست و مطمئن میشه فایل بعد از اتمام کار بسته میشه.
  • روی تمام pages داخل آبجکت pdf حلقه می‌زنیم.
  • با page.extract_text() متن هر صفحه رو استخراج و به متغیر text اضافه می‌کنیم.
  • خروجی نهایی متن کامل استخراج شده هست.
  • یکی از بهترین ویژگی‌های pdfplumber، توانایی‌اش در استخراج آسان جداول و قطعه کدهای مختلف از PDF هست.

مزایا و معایب pdfplumber

مزایا:

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

معایب:

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

مقایسه کتابخانه‌ها: کدوم برای کار من بهتره؟

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

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

راهکارهای پیشرفته: کار با PDF‌های اسکن شده و OCR

تا الان درباره PDF‌هایی صحبت کردیم که متن “قابل انتخاب” دارن. اما اگه PDF شما یه تصویر اسکن شده باشه، چی؟ یعنی در واقع یه عکس از یه متن! در این حالت، هیچ کدوم از کتابخونه‌های بالا نمی‌تونن متن رو استخراج کنن، چون متنی وجود نداره که بشه خوندش. اینجا پای تکنولوژی OCR (Optical Character Recognition) یا تشخیص نوری کاراکتر به میون میاد.

برای کار با PDF‌های اسکن شده، باید ابتدا هر صفحه رو به یک تصویر تبدیل کنیم، سپس از یه موتور OCR مثل Tesseract استفاده کنیم تا متن رو از اون تصویر استخراج کنیم.

مراحل کلی برای OCR کردن PDF:

  1. نصب Tesseract: Tesseract یک موتور OCR اوپن سورس بسیار قدرتمنده که توسط گوگل توسعه داده شده. باید اون رو روی سیستمت نصب کنی.
  2. نصب PyTesseract: این یک کتابخانه پایتون برای کار با Tesseract هست. با pip install pytesseract نصب میشه.
  3. نصب Pillow (PIL Fork): برای کار با تصاویر در پایتون، با pip install Pillow نصب میشه.
  4. تبدیل PDF به تصویر: از کتابخانه‌هایی مثل `PymuPDF` (fitz) یا `pdf2image` (نیاز به Poppler داره) می‌تونی برای تبدیل هر صفحه PDF به یک تصویر استفاده کنی.
  5. اعمال OCR: بعد از اینکه هر صفحه به یک تصویر تبدیل شد، اون رو به pytesseract.image_to_string() میدی تا متن رو استخراج کنه.

نکته مهم: فرآیند OCR برای پردازیش PDF‌های اسکن شده معمولاً زمان‌برتر و پیچیده‌تره و دقت اون به کیفیت تصویر اسکن شده و زبان متن بستگی داره. حتماً بسته‌های زبان مورد نظرت (مثلاً fas برای فارسی یا eng برای انگلیسی) رو هم برای Tesseract نصب کن.

عیب‌یابی سریع: مشکلات رایج و راه‌حل‌ها

هیچ وقت کاری بدون چالش نیست! ممکنه در حین استخراج متن از PDF با مشکلاتی روبرو بشی. اینجا چند تا از مشکلات رایج و راه حل‌های اونها رو برات آوردیم:

مشکل ۱: متن استخراج شده درهم و برهم یا بی‌معنیه

  • علت: احتمالاً PDF ساختار پیچیده‌ای داره، فونت‌های خاصی استفاده شده یا یک PDF اسکن شده (تصویری) هست.
  • راه‌حل:
    1. ابتدا از pdfminer.six یا pdfplumber امتحان کن، چون دقت بالاتری در حفظ ساختار دارن.
    2. اگر مشکل حل نشد، احتمالاً PDF اسکن شده‌ست و نیاز به OCR (مثل Tesseract) داری.
    3. بررسی کن که PDF محافظت شده (رمزدار) نباشه.

مشکل ۲: خطا “No such file or directory”

  • علت: مسیر فایل PDF که دادی اشتباهه یا فایل در اون مکان وجود نداره.
  • راه‌حل:
    1. مطمئن شو که نام فایل PDF رو به درستی نوشتی (حروف بزرگ و کوچک مهمه).
    2. بررسی کن که فایل PDF در همان مسیری قرار داره که اسکریپت پایتون رو اجرا می‌کنی.
    3. اگه فایل در پوشه دیگه‌ای هست، مسیر کامل (absolute path) رو بنویس. مثلاً "C:/Users/YourUser/Documents/sample.pdf".

مشکل ۳: خطا “ModuleNotFoundError”

  • علت: کتابخانه مورد نظر نصب نشده یا در محیط مجازی فعال نیست.
  • راه‌حل:
    1. مطمئن شو که کتابخانه رو با pip install نصب کردی (مثلاً pip install PyPDF2).
    2. اگه از محیط مجازی (virtual environment) استفاده می‌کنی، مطمئن شو که محیط فعال باشه و کتابخونه رو داخل همون محیط نصب کردی.

مشکل ۴: استخراج متن فارسی با مشکل مواجه است (حروف جدا یا نامرتب)

  • علت: بعضی از کتابخانه‌ها یا فونت‌ها با نحوه رندر کردن حروف فارسی در PDF مشکل دارن.
  • راه‌حل:
    1. pdfminer.six و pdfplumber معمولاً عملکرد بهتری برای زبان‌های راست به چپ مثل فارسی دارن. از این دو استفاده کن.
    2. مطمئن شو که در هنگام ذخیره فایل متنی، از انکدینگ utf-8 استفاده می‌کنی (همونطور که در کدهای نمونه نشون دادیم: encoding="utf-8").
    3. در نهایت، اگر PDF اسکن شده‌ست و OCR می‌کنی، حتماً پکیج زبان فارسی Tesseract رو نصب کن و در کد بهش اشاره کن.

جمع‌بندی و حرف آخر

خب رفیق، دیدی که با پایتون و چند تا کتابخانه قدرتمندش، تبدیل PDF به متن دیگه یه کابوس نیست، بلکه یه کار لذت‌بخش و ساده‌ست. انتخاب بهترین کتابخونه کاملاً بستگی به نیاز تو داره:

  • برای سادگی و سرعت، PyPDF2 رو انتخاب کن.
  • برای دقت بیشتر و حفظ ساختار، pdfminer.six رو در نظر بگیر.
  • و برای کنترل کامل، استخراج جداول و داده‌های ساختارمند، pdfplumber بهترین گزینه شماست.

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

Table of Contents

آخرین نوشته‌ها