Python을 사용하여 PDF에서 텍스트 추출

Python을 사용하여 PDF에서 텍스트 추출

2022-10-18 last update

10 minutes reading tutorial productivity python programming

소개



이 기사에서는 Python을 사용하여 text에서 PDF를 추출하는 방법에 대해 설명합니다. 이 작업을 완료하기 위해 PyPDF2 모듈을 사용할 것입니다. PyPDF2는 분할, 병합, 자르기, 사용자 지정 데이터 추가, 암호화 및 PDF에서 텍스트 검색과 같은 다양한 작업을 수행할 수 있는 무료 오픈 소스 Python 라이브러리입니다.

PDF 샘플 파일



텍스트를 추출하는 데 사용할 PDF 샘플 파일은 Edgar Allan Poe의 The Raven입니다.

디렉토리 구조



실행 전 디렉토리 구조script.py
Python Project/
├── app/
│   ├── script.py
│   ├── the_raven.pdf
│


구현


  • PDF 열기 및 텍스트 추출
  • 텍스트를 파일에 저장합니다.

  • PDF 열기 및 텍스트 추출




    def extract_text_from_pdf(pdf_filename: str) -> str:
        text_output = ''
        with open(pdf_filename, 'rb') as pdf_object:
            pdf_reader = PyPDF2.PdfFileReader(pdf_object)
            for i in range(0, pdf_reader.numPages):
                page_obj = pdf_reader.getPage(i)
                text_output += page_obj.extractText()
        return text_output
    


  • convert_pdf_to_text() 함수는 텍스트를 추출할 PDF의 파일 이름인 pdf_filename 하나의 매개변수를 사용합니다.
  • pdf_filenamerbpdf_object PyPDF2 라는 pdf_reader 객체에 전달됩니다.
  • 그런 다음 PyPDF2 함수와 range() 속성을 사용하여 numPages 객체의 모든 페이지를 반복하여 범위 함수의 상한을 정의합니다.
  • 그런 다음 각 페이지에 대해 page_obj 인스턴스를 만들고 page_object 메서드를 사용하여 각 extractText()에서 텍스트를 추출합니다.
  • 마지막으로 결과를 text_output 문자열에 연결하고 결과를 반환합니다.

  • 파일에 텍스트를 저장합니다.




    def save_converted_text(text_file: str, filename: str) -> None:
        with open(filename, 'w+', encoding='utf8') as file_obj:
            file_obj.write(text_file)
        print(f'{text_file} has been successfully saved.')
    


  • save_converted_text() 함수는 PDF에서 추출된 텍스트인 text_file와 파일을 저장할 이름인 filename의 두 가지 매개변수를 사용합니다. file namew+'utf8'로 사용하여 file_obj 모드(쓰기 + 읽기)로 열립니다.
  • text_file의 내용은 file_obj 에 기록됩니다. 작업이 성공적으로 실행되면 메시지가 인쇄됩니다.

  • 인코딩이란 무엇입니까?



    많은 경우 응용 프로그램은 국제화된 메시지를 사용하여 영어, 프랑스어, 일본어, 히브리어 또는 러시아어와 같이 사용자가 선택한 다양한 언어로 출력을 표시합니다. 웹 콘텐츠는 이러한 언어로 작성할 수 있으며 다양한 이모티콘 기호를 포함할 수도 있습니다. Python의 문자열 유형은 문자를 나타내는 데 Unicode Standard를 사용하므로 Python 프로그램이 이러한 모든 가능한 문자를 사용할 수 있습니다. 인코딩을 지정하지 않으면 기본적으로 UTF-8가 사용됩니다. 자세한 내용은 Python 공식 문서를 참조하십시오encoding.

    전체 코드




    import PyPDF2
    
    
    # STEP 1: open PDF and convert to text
    def extract_text_from_pdf(pdf_filename: str) -> str:
        text_output = ''
        with open(pdf_filename, 'rb') as pdf_object:
            pdf_reader = PyPDF2.PdfFileReader(pdf_object)
            for i in range(0, pdf_reader.numPages):
                page_obj = pdf_reader.getPage(i)
                text_output += page_obj.extractText()
        return text_output
    
    
    # STEP 2: Save Text to File
    def save_converted_text(text_file: str, filename: str) -> None:
        with open(filename, 'w+', encoding='utf8') as file_obj:
            file_obj.write(text_file)
        print(f'{text_file} has been successfully saved.')
    
    
    if __name__ == '__main__':
        # extract text from PDF
        text_from_pdf = extract_text_from_pdf('the_raven.pdf')
        # save extracted text
        save_converted_text(text_from_pdf, 'the_raven.txt')
    


    디렉토리 구조



    실행 후 디렉토리 구조script.py
    Python Project/
    ├── app/
    │   ├── script.py
    │   ├── the_raven.pdf
    │   ├── the_raven.txt
    │
    


    결론



    이 기사를 읽고 나면 이제 PythonPyPDF2 라이브러리를 사용하여 PDF에서 텍스트를 추출할 수 있습니다. 텍스트를 추출할 때 인식할 수 없는 텍스트가 발견되면 올바른 문자열 인코딩을 사용하고 있는지 확인하십시오. 이 글이 도움이 되었다면 like , follow , leave a comment 를 눌러주세요!

    🔗 리소스 링크


  • GitHub Source Code