"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python 라인에서 Google Gemini를 사용하여 까다로운 PDF에서 데이터 추출

Python 라인에서 Google Gemini를 사용하여 까다로운 PDF에서 데이터 추출

2024-08-17에 게시됨
검색:464

이 가이드에서는 Gemini Flash 또는 GPT-4o와 같은 VLM(비전 언어 모델)을 사용하여 PDF에서 구조화된 데이터를 추출하는 방법을 보여 드리겠습니다.

Google의 최신 비전 언어 모델 시리즈인 Gemini는 텍스트 및 이미지 이해 분야에서 최고의 성능을 보여주었습니다. 이렇게 향상된 다중 모드 기능과 긴 컨텍스트 창을 사용하면 그림, 차트, 표, 다이어그램 등 기존 추출 모델에서 어려움을 겪는 시각적으로 복잡한 PDF 데이터를 처리하는 데 특히 유용합니다.

이렇게 하면 시각적 파일 및 웹 추출을 위한 자체 데이터 추출 도구를 쉽게 구축할 수 있습니다. 방법은 다음과 같습니다.

Gemini의 긴 컨텍스트 창과 다중 모드 기능은 기존 추출 모델이 어려움을 겪는 시각적으로 복잡한 PDF 데이터를 처리하는 데 특히 유용합니다.

환경 설정

추출에 앞서 개발 환경을 설정해 보겠습니다. 이 가이드에서는 시스템에 Python이 설치되어 있다고 가정합니다. 그렇지 않은 경우 https://www.python.org/downloads/

에서 다운로드하여 설치하세요.

⚠️ Python을 사용하지 않으려면 thepi.pe의 클라우드 플랫폼을 사용하여 코드를 작성하지 않고도 파일을 업로드하고 결과를 CSV로 다운로드할 수 있습니다.

필수 라이브러리 설치

터미널이나 명령 프롬프트를 열고 다음 명령을 실행하세요.

pip install git https://github.com/emcf/thepipe
pip install pandas

Python을 처음 접하는 사람들을 위해 pip는 Python용 패키지 설치 프로그램이며, 이 명령은 필요한 라이브러리를 다운로드하고 설치합니다.

API 키 설정

파이프를 사용하려면 API 키가 필요합니다.

면책 조항: thepi.pe는 무료 오픈 소스 도구이지만 API에는 토큰당 약 $0.00002의 비용이 듭니다. 이러한 비용을 피하려면 GitHub의 로컬 설정 지침을 확인하세요. 선택한 LLM 제공업체에 여전히 비용을 지불해야 한다는 점에 유의하세요.

설정 방법은 다음과 같습니다.

  1. https://thepi.pe/platform/ 방문
  2. 계정 만들기 또는 로그인
  3. 설정 페이지에서 API 키를 찾으세요

Extracting Data from Tricky PDFs with Google Gemini in lines of Python

이제 이것을 환경 변수로 설정해야 합니다. 프로세스는 운영 체제에 따라 다릅니다.

  • pi.pe 플랫폼의 설정 메뉴에서 API 키를 복사하세요.

Windows의 경우:

  1. 시작 메뉴에서 "환경 변수"를 검색하세요.
  2. "시스템 환경 변수 편집"을 클릭하세요.
  3. "환경 변수" 버튼을 클릭하세요.
  4. '사용자 변수'에서 '새로 만들기'를 클릭하세요.
  5. 변수 이름을 THEPIPE_API_KEY로 설정하고 값을 API 키로 설정합니다.
  6. 저장하려면 "확인"을 클릭하세요.

macOS 및 Linux의 경우:
터미널을 열고 다음 줄을 셸 구성 파일(예: ~/.bashrc 또는 ~/.zshrc)에 추가합니다.

export THEPIPE_API_KEY=your_api_key_here

그런 다음 구성을 다시 로드하세요.

source ~/.bashrc # or ~/.zshrc

추출 스키마 정의

성공적인 추출의 핵심은 가져오려는 데이터에 대한 명확한 스키마를 정의하는 것입니다. 수량 명세서(Bill of Quantity) 문서에서 데이터를 추출한다고 가정해 보겠습니다.

Extracting Data from Tricky PDFs with Google Gemini in lines of Python

Bill of Quantity 문서의 페이지 예입니다. 각 페이지의 데이터는 다른 페이지와 독립적이므로 "페이지별로" 추출을 수행합니다. 페이지당 추출할 데이터가 여러 개 있으므로 여러 추출을 True

로 설정했습니다.

열 이름을 살펴보면 다음과 같은 스키마를 추출할 수 있습니다.

schema = {
  "item": "string",
  "unit": "string",
  "quantity": "int",
}

pi.pe 플랫폼에서 원하는 대로 스키마를 수정할 수 있습니다. "스키마 보기"를 클릭하면 Python API와 함께 사용하기 위해 복사하여 붙여넣을 수 있는 스키마가 제공됩니다

Image description

PDF에서 데이터 추출

이제 extract_from_file을 사용하여 PDF에서 데이터를 가져오겠습니다.

from thepipe.extract import extract_from_file
results = extract_from_file(
  file_path = "bill_of_quantity.pdf",
  schema = schema,
  ai_model = "google/gemini-flash-1.5b",
  chunking_method = "chunk_by_page"
)

여기에서는 각 페이지를 AI 모델에 개별적으로 전송하려고 하기 때문에 Chunking_method="chunk_by_page"를 사용했습니다(PDF가 너무 커서 한꺼번에 피드할 수 없음). 또한 PDF 페이지에는 각각 여러 행의 데이터가 포함되어 있으므로 multiple_extractions=True를 설정했습니다. PDF의 페이지는 다음과 같습니다.

Image description

thepi.pe 플랫폼에서 볼 수 있는 BOM PDF 추출 결과

결과 처리

추출 결과는 사전 목록으로 반환됩니다. 이러한 결과를 처리하여 pandas DataFrame을 만들 수 있습니다:

import pandas as pd
df = pd.DataFrame(results)
# Display the first few rows of the DataFrame
print(df.head())

이렇게 하면 텍스트 내용과 그림, 표와 같은 시각적 요소에 대한 설명을 포함하여 추출된 모든 정보가 포함된 DataFrame이 생성됩니다.

다른 형식으로 내보내기

이제 데이터가 DataFrame에 있으므로 다양한 형식으로 쉽게 내보낼 수 있습니다. 다음은 몇 가지 옵션입니다.

Excel로 내보내기

df.to_excel("extracted_research_data.xlsx", index=False, sheet_name="Research Data")

이렇게 하면 "Research Data"라는 시트가 포함된 "extracted_research_data.xlsx"라는 Excel 파일이 생성됩니다. index=False 매개변수는 DataFrame 인덱스가 별도의 열로 포함되는 것을 방지합니다.

CSV로 내보내기

더 간단한 형식을 선호하는 경우 CSV로 내보낼 수 있습니다.

df.to_csv("extracted_research_data.csv", index=False)

이렇게 하면 Excel이나 텍스트 편집기에서 열 수 있는 CSV 파일이 생성됩니다.

엔딩 노트

성공적인 추출의 핵심은 명확한 스키마를 정의하고 AI 모델의 다중 모드 기능을 활용하는 데 있습니다. 이러한 기술에 익숙해지면 사용자 정의 청킹 방법, 사용자 정의 추출 프롬프트, 추출 프로세스를 더 큰 데이터 파이프라인에 통합하는 등의 고급 기능을 탐색할 수 있습니다.

릴리스 선언문 이 기사는 https://dev.to/emcf/extracting-data-from-tricky-pdfs-with-google-gemini-in-10-lines-of-python-7ni?1에서 복제됩니다. 침해가 있는 경우 , [email protected]로 문의해주세요.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3