PDF는 설문조사, 신청서, 계약서에서 송장에 이르기까지 다양한 정보를 수집하는 데 널리 사용됩니다. 그러나 PDF에서 데이터를 수동으로 추출하는 것은 시간이 많이 걸리고 번거로우며 오류가 발생할 수도 있습니다. 파이썬을 사용하여 PDF에서 데이터를 추출하는 방법에 대해 소개합니다.
※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.
- 원문: Extract PDF Form Data with Python
- URL: https://medium.com/@alice.yang_10652/extract-pdf-form-data-with-python-39b23422cc3a
PDF 양식에서 값을 추출하는 파이썬 라이브러리
Python으로 PDF 양식에서 값을 추출하려면 Python용 Spire.PDF 라이브러리를 사용할 수 있습니다. Python용 Spire.PDF는 Python 애플리케이션 내에서 PDF 파일 생성, 읽기, 편집, 변환을 지원하는 기능이 풍부하고 사용자 친화적인 라이브러리입니다.
이 라이브러리를 사용하면 텍스트 또는 이미지 추가, 텍스트 또는 이미지 추출, 텍스트 또는 이미지 바꾸기, 디지털 서명 추가, 페이지 추가 또는 삭제, PDF 병합 또는 분할, 북마크 만들기, 텍스트 또는 이미지 워터마크 추가, 채우기 가능한 양식 삽입 등 다양한 PDF 조작 작업을 수행할 수 있습니다. 또한 PDF 파일을 Word, Excel, 이미지, HTML, SVG, XPS, OFD, PCL, PostScript 등 다양한 파일 형식으로 변환할 수 있습니다.
PyPI에서 다음 pip 명령을 사용하여 Python용 Spire.PDF를 설치할 수 있습니다.
pip install Spire.Pdf
라이브러리 설치에 대한 자세한 내용은 [여기]를 참고하세요.
파이썬으로 여러 PDF 양식에서 데이터 추출하기
설문조사 응답이나 고객 피드백 양식과 같이 작성된 PDF 양식을 많이 받은 경우, 이러한 양식에서 데이터를 추출하면 수집된 정보를 바탕으로 분석하고 보고서를 생성할 수 있습니다.
다음은 Python과 Python용 Spire.PDF를 사용하여 다양한 유형(텍스트 상자, 목록 상자, 콤보 상자/드롭다운 목록, 라디오 버튼 및 체크박스)의 여러 PDF 양식에서 데이터를 추출하는 방법을 보여주는 예제입니다.
from spire.pdf.common import *
from spire.pdf import *
# Create an object of the PdfDocument class
doc = PdfDocument()
# Load a PDF document
doc.LoadFromFile("Forms.pdf")
# Create a list to store the extracted form names and values
content = []
# Get the forms from the document
form = doc.Form
formWidget = PdfFormWidget(form)
# Iterate through all forms
if formWidget.FieldsWidget.Count > 0:
for i in range(formWidget.FieldsWidget.List.Count):
field = formWidget.FieldsWidget.get_Item(i)
# Get the name and value of the textbox form
if isinstance(field, PdfTextBoxFieldWidget):
textBoxField = field
name = textBoxField.Name
value = textBoxField.Text
content.append(f"Textbox Name: {name}\n")
content.append(f"Textbox Value: {value}\r\n")
# Get the name, items, and selected item of the list box form
if isinstance(field, PdfListBoxWidgetFieldWidget):
listBoxField = field
name = listBoxField.Name
content.append(f"Listbox Name: {name}\n")
content.append("Listbox Items: \n")
items = listBoxField.Values
for i in range(items.Count):
item = items.get_Item(i)
content.append(f"{item.Value}\n")
selectedValue = listBoxField.SelectedValue
content.append(f"Listbox Selected Item: {selectedValue}\r\n")
# Get the name, items, and selected item of the combo box (dropdown list) form
if isinstance(field, PdfComboBoxWidgetFieldWidget):
comBoxField = field
name = comBoxField.Name
content.append(f"Combobox Name: {name}\n")
content.append("Combobox Items: \n")
items = comBoxField.Values
for i in range(items.Count):
item = items.get_Item(i)
content.append(f"{item.Value}\n")
selectedValue = comBoxField.SelectedValue
content.append(f"Combobox Selected Item: {selectedValue}\r\n")
# Get the name and selected item of the radio button form
if isinstance(field, PdfRadioButtonListFieldWidget):
radioBtnField = field
name = radioBtnField.Name
content.append(f"Radio Button Name: {name}\n")
selectedValue = radioBtnField.SelectedValue
content.append(f"Radio Button Selected Item: {selectedValue}\r\n")
# Get the name and status of the checkbox form
if isinstance(field, PdfCheckBoxWidgetFieldWidget):
checkBoxField = field
name = checkBoxField.Name
content.append(f"Checkbox Name: {name}\n")
status = checkBoxField.Checked
if status:
content.append("Checkbox Status: Checked \n")
else:
content.append("Checkbox Status: Unchecked \r\n")
# Write the content of the list into a text file
with open("GetFormValues.txt", "w", encoding="UTF-8") as file:
file.writelines(content)
doc.Dispose()
파이썬으로 특정 PDF 양식에서 데이터 추출하기
여러 PDF 양식에서 데이터를 추출하는 것 외에도 이름이나 색인을 통해 특정 양식에 액세스한 다음 해당 양식에서 값을 추출할 수 있습니다.
다음은 Python과 Python용 Spire.PDF를 사용하여 특정 PDF 양식에서 데이터를 추출하는 방법을 보여주는 예제입니다.
from spire.pdf.common import *
from spire.pdf import *
# Create an instance of the PdfDocument class
doc = PdfDocument()
# Load a PDF document
doc.LoadFromFile("Forms.pdf")
# Create a list to store the extracted form name and value
content = []
# Get pdf forms
form = doc.Form
formWidget = PdfFormWidget(form)
# Get a textbox form by its name
field = formWidget.FieldsWidget.get_Item("Name")
# Or get a textbox form by its index
# field = formWidget.FieldsWidget.get_Item(0)
textbox = PdfTextBoxFieldWidget(field.Ptr)
# Get the name and value of the textbox
name = textbox.Name
value = textbox.Text
content.append(f"Textbox Name: {name}\n")
content.append(f"Textbox Value: {value}")
# Save the result to a text file
with open("GetSpecificFormValue.txt", "w", encoding="UTF-8") as file:
file.writelines(content)
doc.Close()
'Python' 카테고리의 다른 글
생산성과 워크플로를 개선할 12가지 VS Code 확장 (8) | 2024.04.20 |
---|---|
파이썬으로 웹 스크래핑하는 5가지 방법 (7) | 2024.04.08 |
파이썬으로 QR 코드 생성하는 방법 (5) | 2024.03.30 |
파이썬 Matplotlib 마스터를 위한 단계별 가이드 (7) | 2024.03.23 |
데이터 과학자의 Python 코드 주석 활용법 (8) | 2024.03.15 |