# จัดการข้อความ และรูป จากไฟล์ PDF ด้วย PDFBox

## [ดึงข้อความจากไฟล์ PDF ด้วย PDFBox ใน Python](https://python3.wannaphong.com/2020/04/pdf-pdfbox-python.html)

สวัสดีผู้อ่านทุกท่านครับ วันนี้ผมจะพาผู้อ่านไปเขียนโปรแกรมภาษา 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 ของกรมควบคุมโรค](https://ddc.moph.go.th/viralpneumonia/situation.php/file/situation/situation-no95-070463.pdf) ที่เป็นไฟล์ PDF

![ดึงข้อความจากไฟล์ PDF ด้วย PDFBox ใน Python](https://1.bp.blogspot.com/-jZDUycjneI0/Xo3Mudx32MI/AAAAAAAAeeg/LXrS3y2rSN8egsYUHoqUtxl6suGKA2BXwCLcBGAsYHQ/s640/Annotation%2B2020-04-08%2B200754.png)

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

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

![ไฟล์ที่ได้จากการดึงข้อความจากไฟล์ PDF](https://1.bp.blogspot.com/-RG6EPLKWEQY/Xo3MMTpygGI/AAAAAAAAeeY/Ex7lwBRN2fM1dxX3x19BgHNOe7HwZMT2ACLcBGAsYHQ/s640/Annotation%2B2020-04-08%2B200531.png)

เราจะได้ข้อความที่อยู่ในไฟล์ 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>

> Reference : <https://python3.wannaphong.com/2020/04/pdf-pdfbox-python.html>
