ปรับปรุงล่าสุด: 27 ม.ค. 2025

วิธีการแปลง PDF เป็นรูปใน Python: คู่มือทีละขั้นตอน
การแปลงไฟล์ PDF เป็นรูปแบบภาพ เช่น JPEG หรือ PNG อาจมีประโยชน์มาก โดยเฉพาะในกรณีที่คุณต้องการดึงภาพจาก PDF, แสดงตัวอย่างเอกสาร หรือทำงานกับข้อมูลภาพ Python เป็นภาษาการเขียนโปรแกรมที่มีความยืดหยุ่น ช่วยให้สามารถดำเนินการนี้ได้หลายวิธีอย่างมีประสิทธิภาพ
ในคู่มือนี้ เราจะพาคุณผ่านกระบวนการทีละขั้นตอนในการแปลง PDF เป็นภาพใน Python คุณจะได้เรียนรู้วิธีการทำเช่นนี้โดยใช้ไลบรารียอดนิยมของ Python, ตัวอย่างโค้ด, และคำแนะนำการแก้ไขปัญหาที่มีประโยชน์ นอกจากนี้เราจะให้โค้ดฉบับสมบูรณ์และภาพผลลัพธ์รวมถึง PDF ตัวอย่างที่ใช้ในนั้น
สิ่งที่คุณต้องการเพื่อแปลง PDF เป็นรูปใน Python
ก่อนที่เราจะเริ่มเขียนโค้ด อย่าลืมตรวจสอบว่าคุณมีเครื่องมือที่ถูกต้องดังนี้ สำหรับงานนี้ คุณจะต้องติดตั้งไลบรารี Python เหล่านี้:
- Pillow: ไลบรารีจัดการภาพที่ได้รับความนิยมใน Python ที่ใช้เปิด, ปรับปรุง, และบันทึกไฟล์ภาพ
- pdf2image: ไลบรารีนี้ช่วยคุณแปลงหน้า PDF เป็นภาพใน Python โดยใช้ Poppler เพื่อเรนเดอร์หน้า PDF เป็นภาพ
การติดตั้งไลบรารีที่จำเป็น
คุณสามารถติดตั้งไลบรารีเหล่านี้ได้โดยใช้ pip:
pip install pillow pdf2image
หากคุณไม่มี Poppler ติดตั้งในระบบของคุณ คุณอาจจำเป็นต้องติดตั้งแยกต่างหาก ตรวจสอบคู่มือการติดตั้งสำหรับแพลตฟอร์มของคุณ ที่นี่
คู่มือทีละขั้นตอนในแปลง PDF เป็นภาพใน Python
ขั้นตอนที่ 1: นำเข้าไลบรารีที่จำเป็น
เริ่มต้นโดยการนำเข้าไลบรารี Python ที่จำเป็น:
from pdf2image import convert_from_path
from PIL import Image
ขั้นตอนที่ 2: แปลง PDF เป็นภาพ
ด้วยการนำเข้าไลบรารีแล้ว คุณสามารถแปลงไฟล์ PDF เป็นภาพได้ นี่คือวิธีทำ:
# แปลง PDF เป็นภาพ
images = convert_from_path('yourfile.pdf')
# บันทึกแต่ละหน้าเป็นภาพ
for i, image in enumerate(images):
image.save(f'page_{i}.jpg', 'JPEG')
คำอธิบายโค้ด:
- ฟังก์ชัน
convert_from_path()
แปลงไฟล์ PDF เป็นรายการของ วัตถุภาพ PIL. - จากนั้นเราจะวนผ่านภาพและบันทึกแต่ละหน้าของ PDF เป็นภาพแยกต่างหาก (ในกรณีนี้คือรูปแบบ JPEG).
ขั้นตอนที่ 3: ตัวเลือกเสริม – แปลงไปยังรูปแบบภาพอื่นๆ
คุณสามารถแปลงภาพไปยังรูปแบบอื่นๆ เช่น PNG โดยการเปลี่ยนรูปแบบในเมธอด image.save()
:
image.save(f'page_{i}.png', 'PNG')
โค้ดฉบับสมบูรณ์
นี่คือโค้ดฉบับสมบูรณ์ คัดลอกไปบันทึกด้วยชื่อใดๆ ตามที่คุณต้องการและนามสกุล .py
แล้วดำเนินการ ตัวอย่างเช่น คุณสามารถตั้งชื่อว่า convert_pdf_to_images.py
ก่อนดำเนินการ เพียงปรับปรุงตัวแปร pdf_path
เพื่อชี้ไปยังเส้นทางของไฟล์ PDF ที่คุณต้องการ
ดาวน์โหลด PDF ตัวอย่างและดูภาพหน้าจอของมัน
คุณสามารถใช้ PDF ใดๆ ได้ แต่เพื่อการดำเนินการและการทดสอบโค้ดนี้เราใช้ PDF นี้
ภาพผลลัพธ์ที่สร้างโดยโค้ด
- page_1.jpg
- page_2.jpg
- page_3.jpg
วิธีอื่นๆ ในการแปลง PDF เป็นรูปใน Python
แม้ว่า pdf2image และ Poppler จะใช้กันทั่วไป แต่ยังมีวิธีอื่นในการแปลง PDF เป็นรูปโดยไม่ต้องใช้ Poppler เช่น:
- การใช้ PyMuPDF (fitz): ไลบรารีนี้ยังช่วยให้คุณดึงภาพจาก PDF และจัดการกับมันได้
pip install pymupdf
ตัวอย่างโค้ด:
import fitz # PyMuPDF
# เปิดไฟล์ PDF
doc = fitz.open("yourfile.pdf")
# วนซ้ำแต่ละหน้าและแปลงเป็นภาพ
for page_num in range(len(doc)):
page = doc.load_page(page_num)
pix = page.get_pixmap()
pix.save(f"page_{page_num}.png")
วิธีนี้ทำงานโดยไม่ต้องใช้ Poppler และสามารถเป็นทางเลือกหากคุณพบปัญหาการติดตั้ง
ข้อผิดพลาดที่พบบ่อยและการแก้ไขปัญหา
แม้ว่าโดยทั่วไปการแปลง PDFs เป็นภาพใน Python จะไม่ซับซ้อน แต่คุณอาจพบปัญหาบางประการ นี่คือข้อผิดพลาดและวิธีแก้ไขที่พบบ่อย:
Error:
OSError: cannot identify image file
- เรื่องนี้เกิดขึ้นทั่วไปหาก PDF ไม่ได้เรนเดอร์อย่างถูกต้อง ตรวจสอบให้แน่ใจว่า Poppler ติดตั้งเรียบร้อยและสามารถเข้าถึงได้จากสภาพแวดล้อม Python ของคุณ
Error:
RuntimeError: cannot open image file
- ข้อผิดพลาดนี้อาจเกิดขึ้นหากคุณพยายามเปิดรูปแบบภาพที่ไม่สนับสนุน ตรวจสอบรูปแบบที่คุณบันทึกภาพ (JPEG, PNG, ฯลฯ) และตรวจสอบว่า Pillow สนับสนุนหรือไม่
สรุป
การแปลงเอกสาร PDF เป็นภาพใน Python เป็นเรื่องง่ายด้วยความช่วยเหลือของไลบรารีเช่น pdf2image และ Pillow ไม่ว่าคุณจะต้องการดึงภาพจาก PDF หรือเพียงต้องการแสดงแต่ละหน้าเป็นภาพ คู่มือนี้ได้แสดงวิธีการทำขั้นตอนต่อขั้นตอน
จำไว้ว่า ขึ้นอยู่กับความต้องการของโครงการของคุณ คุณยังสามารถสำรวจไลบรารี Python อื่นๆ เช่น PyMuPDF เพื่อบรรลุผลลัพธ์ที่คล้ายกัน
หากคุณมีคำถามหรือพบปัญหาใดๆ ขณะดำเนินการตามวิธีแก้ไขนี้ โปรดฝากความคิดเห็นใน ฟอรัมของเรา!
แบ่งปันและสำรวจ
หากคู่มือนี้ช่วยคุณ อย่าลืมแบ่งปันกับผู้อื่น และสำรวจคู่มือที่เป็นประโยชน์อื่นๆ ของเราสำหรับเทคนิคและเคล็ดลับการเขียนโปรแกรมอื่นๆ!