직장인

[회사원] 업무 코딩기록 - (PDFMiner)Read_Find(성명,소속)열

cyy1211 2024. 12. 20. 15:17
728x90
반응형
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser

def read_pdf(filename):    
    output_string = StringIO()
    with open(filename, 'rb') as f:
        parser = PDFParser(f)
        doc = PDFDocument(parser)
        rsrcmgr = PDFResourceManager()
        device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        for page in PDFPage.create_pages(doc):
            interpreter.process_page(page)
    return str(output_string.getvalue())

# "1.pdf" 파일을 불러옵니다.
txt = read_pdf("C:\Users\user\Desktop\VSCode(python)\(CODE)PDF,OCR\pdf_raw\1.pdf")

# "성명/소속"이 있는 열번호를 출력합니다.
print(txt.find("성명/소속"))

# "성명/소속"이 있는 열번호 136열 근방(100~200열)을 출력합니다.
print(txt[100:200])

# 해당 위치(100~200열)에서 ":"을 기준으로 부분을 나누며, 구분기호 ":"을 "---"로 출력합니다.
for part in txt[100:200].split(":"):
    print(part)
    print("--------------------")
   
# 해당위치(100~200열)에서 "---"로 구분된 부분 중 "성명/소속"이 위치하는 [1]번째 요소를
# 인식하여 strip으로 양쪽 공백을 제거, "/" 문자를 "_"로 대체, "2. 임용기간" 문자를 ""공백으로 대체하여 출력합니다.
print(txt[100:200].split(":")[1].strip().replace(" / ","_").replace("2. 임용기간",""))
728x90
반응형