8 เมษายน 2563

Published เมษายน 08, 2563 by with 0 comment

ดึงข้อความจากไฟล์ PDF ด้วย PDFBox ใน Python

สวัสดีผู้อ่านทุกท่านครับ วันนี้ผมจะพาผู้อ่านไปเขียนโปรแกรมภาษา Python สำหรับดึงข้อความจากไฟล์ PDF ด้วย PDFBox กัน
Apache PDFBox เป็นชุดคำสั่งสำหรับจัดการกับไฟล์ PDF โดยสามารถใช้สร้าง อ่าน แก้ไข แบ่ง รวม ไฟล์ PDF พัฒนาบนภาษา Java และแน่นอนว่าใช้ Apache License 2.0

สำหรับการใช้งานกับ Python เราสามารถดึงข้อความออกจากไฟล์ PDF ได้โดยใช้โมดูลที่ชื่อว่า python-pdfbox

การติดตั้ง
ก่อนอื่นให้ผู้อ่านติดตั้ง JAVA JDK ก่อน และตั้งค่า path ชื่อ JAVA_HOME ให้เรียบร้อย
แล้วโหลด Apache PDFBox เป็นไฟล์ pdfbox-app.jar จาก https://pdfbox.apache.org/download.cgi วางไว้ในโฟลเดอร์ แล้วสร้าง path ชื่อ PDFBOX ชี้ไปยังโฟลเดอร์ที่เก็บไฟล์ Apache PDFBox นามสกุล jar

จากนั้นให้ติดตั้ง python-pdfbox ด้วยคำสั่ง
pip install python-pdfbox
เรามาลองดึงไฟล์ PDF กัน

ผมต้องการดึงข้อความจาก รายงานสถานการณ์โรคติดเชื้อไวรัสโคโรนา 2019 ฉบับที่ 95 วันที่ 7 เมษายน 2563 ของกรมควบคุมโรค ที่เป็นไฟล์ PDF

ผมโหลดไฟล์ situation-no95-070463.pdf มา แล้วลองเขียนโปรแกรมดึงข้อความจากไฟล์ PDF ดังนี้

import pdfbox
p = pdfbox.PDFBox()
p.extract_text('situation-no95-070463.pdf',output = "data.txt") # ดึงออกมาเป็นไฟล์ txt ชื่อ data.txt

ผลลัพธ์
ไฟล์ที่ได้จากการดึงข้อความจากไฟล์ PDF

เราจะได้ข้อความที่อยู่ในไฟล์ PDF ออกมา ค่อนข้างเกือบสมบูรณ์

อธิบายคำสั่ง
extract_text(input_path, output_path='',
                     password=None, encoding=None, html=False, sort=False,
                     ignore_beads=False, start_page=1, end_page=None, console=False)
  • input_path - เป็นที่ตั้งไฟล์ PDF
  • output_path - เป็นที่ตั้งผลลัพธ์ไฟล์
  • password - รหัสผ่าน PDF
  • encoding - encoding ของไฟล์
  • html - output เป็น html ถ้าเป็็น True
  • sort - จัดเรียงข้อความ
  • ignore_beads - ignore separation โดย bead
  • start_page - หน้าที่เริ่ม
  • end_page - หน้าที่สิ้นสุด
  • console - ถ้า True จะโชว์หน้า console
นอกจากนั้นยังมีคำสั่ง
p.pdf_to_images('situation-no95-070463.pdf') # แปลง pdf แต่ละหน้าเป็นรูปภาพ
p.extract_images('situation-no95-070463.pdf') # ดึงภาพจาก PDF



ลองเล่น Colab บทความนี้ได้ที่ https://colab.research.google.com/drive/1G5jTALHlGE9e7dFjJ40JQax39tY3yKsI

อ่านเอกสารการใช้งาน python-pdfbox ได้ที่ https://github.com/lebedov/python-pdfbox

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)