AmazonTextractConverter
AmazonTextractConverter
AmazonTextractConverter는 AWS Textract를 사용해 이미지와 단일 페이지 PDF를 문서로 변환해요. 평문 텍스트 OCR, 표·폼·서명·레이아웃의 구조화 분석, 그리고 문서에 대한 자연어 쿼리를 지원합니다.
파이프라인에서 가장 흔한 위치: PreProcessors 앞, 또는 인덱싱 파이프라인의 맨 앞
필수 init 변수: AWS 자격 증명은 Secret 파라미터나 기본 boto3 자격 증명 체인(환경 변수, AWS 설정 파일, IAM 역할)으로 해결
필수 run 변수: sources — 파일 경로 또는 ByteStream 객체 목록
출력 변수: documents(문서 목록), raw_textract_response(Textract API의 원시 응답 목록)
API reference: Amazon Textract
GitHub link: https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/amazon_textract
Package name: amazon-textract-haystack
출처: 문서
본문
Overview
AmazonTextractConverter는 파일 경로 또는 ByteStream 객체 목록을 입력으로 받아, AWS Textract로 이미지와 단일 페이지 PDF에서 텍스트를 추출해요. 선택적으로 meta 입력 파라미터로 문서에 메타데이터를 붙일 수 있어요. 이 통합을 쓰려면 Textract 서비스에 접근할 수 있는 활성 AWS 계정이 필요합니다. AWS 자격 증명을 설정하고 선택한 리전에서 Textract를 사용할 수 있는지 확인하려면 AWS Textract 문서를 참고하세요.
지원 입력 형식: JPEG, PNG, TIFF, BMP, 그리고 단일 페이지 PDF(최대 10MB).
기본적으로 컴포넌트는 표준 AWS 환경 변수(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, AWS_DEFAULT_REGION, AWS_PROFILE)로 인증해요. 초기화 때 이 값들을 Secret 객체로 전달할 수도 있습니다. 명시적 자격 증명이 제공되지 않으면 컴포넌트는 기본 boto3 자격 증명 체인으로 폴백해서, AWS 인프라에서 실행할 때 IAM 역할과 함께 동작해요.
Operation modes
컴포넌트는 설정 방식에 따라 두 가지 Textract API를 오가며 사용합니다:
- 평문 텍스트 OCR(
DetectDocumentText) —feature_types를 설정하지 않았을 때 사용돼요. 가장 빠르고 저렴한 옵션으로, 문서에서 원시 텍스트를 추출합니다. - 구조화 분석(
AnalyzeDocument) —feature_types를 설정했을 때 사용됩니다."TABLES","FORMS","SIGNATURES","LAYOUT"의 어떤 조합이든 전달해 문서에서 더 풍부한 구조 정보를 추출할 수 있어요.
Natural-language queries
run()의 queries 파라미터로 자연어 질문 목록을 전달할 수 있어요. 쿼리가 제공되면 QUERIES 기능 타입이 자동으로 추가되고, Textract가 추출한 답변을 원시 응답에서 반환합니다. 폼, 인보이스, 영수증에서 특정 필드를 끄집어낼 때 맞춤 파싱 로직을 작성하지 않아도 돼서 유용하죠.
Usage
AmazonTextractConverter를 쓰려면 amazon-textract-haystack 통합을 설치해야 해요:
pip install amazon-textract-haystack
On its own
평문 텍스트 OCR의 기본 사용법:
from haystack_integrations.components.converters.amazon_textract import (
AmazonTextractConverter,
)
converter = AmazonTextractConverter()
result = converter.run(sources=["document.png"])
documents = result["documents"]
AnalyzeDocument로 표와 폼 추출하기:
from haystack_integrations.components.converters.amazon_textract import (
AmazonTextractConverter,
)
converter = AmazonTextractConverter(feature_types=["TABLES", "FORMS"])
result = converter.run(sources=["invoice.pdf"])
documents = result["documents"]
raw_responses = result["raw_textract_response"]
자연어 쿼리로 특정 필드 추출하기:
from haystack_integrations.components.converters.amazon_textract import (
AmazonTextractConverter,
)
converter = AmazonTextractConverter()
result = converter.run(
sources=["receipt.png"],
queries=["What is the patient name?", "What is the total due?"],
)
documents = result["documents"]
raw_responses = result["raw_textract_response"]
AWS 자격 증명 명시적으로 전달하기:
from haystack.utils import Secret
from haystack_integrations.components.converters.amazon_textract import (
AmazonTextractConverter,
)
converter = AmazonTextractConverter(
aws_access_key_id=Secret.from_env_var("AWS_ACCESS_KEY_ID"),
aws_secret_access_key=Secret.from_env_var("AWS_SECRET_ACCESS_KEY"),
aws_region_name=Secret.from_token("us-east-1"),
)
result = converter.run(sources=["document.png"])
In a pipeline
Textract로 이미지에서 텍스트를 추출하고 결과 문서를 Document Store에 기록하는 인덱싱 파이프라인 예시예요:
from haystack import Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter
from haystack.components.writers import DocumentWriter
from haystack_integrations.components.converters.amazon_textract import (
AmazonTextractConverter,
)
document_store = InMemoryDocumentStore()
pipeline = Pipeline()
pipeline.add_component("converter", AmazonTextractConverter())
pipeline.add_component("cleaner", DocumentCleaner())
pipeline.add_component(
"splitter",
DocumentSplitter(split_by="sentence", split_length=5),
)
pipeline.add_component("writer", DocumentWriter(document_store=document_store))
pipeline.connect("converter", "cleaner")
pipeline.connect("cleaner", "splitter")
pipeline.connect("splitter", "writer")
file_names = ["document.png", "invoice.pdf"]
pipeline.run({"converter": {"sources": file_names}})
더 알아보기 (Learn more)
- Converters — 컨버터 개요
- PreProcessors — 전처리 파이프라인