MultiFileConverter

MultiFileConverter

CSV, DOCX, HTML, JSON, MD, PPTX, PDF, TXT, XSLX 파일을 문서로 변환해 주는 컴포넌트예요.

출처: 문서

본문

MultiFileConverter는 다양한 파일 유형의 입력을 문서로 변환해요.

이 컴포넌트는 FileTypeRouter, 아홉 개의 변환기, DocumentJoiner를 하나로 묶은 SuperComponent예요.

파라미터

MultiFileConverter를 초기화할 때 필수 파라미터는 없어요. 선택적으로 encoding과 json_content_key 파라미터를 줄 수 있어요.

json_content_key 파라미터는 JSON 파일에서 추출한 데이터 중 어떤 키가 문서의 내용이 될지 지정해요. 이 값은 내부의 JSONConverter 컴포넌트로 전달돼요.

encoding 파라미터는 TXT·CSV·MD 파일의 기본 인코딩을 지정해요. 값을 주지 않으면 기본값 utf-8-sig를 쓰는데, 평범한 UTF-8과 동일하게 디코딩하면서 추가로 파일에 BOM(byte order mark)이 있으면 제거해요. 입력 ByteStream의 메타데이터에 인코딩이 지정돼 있으면 이 파라미터 설정이 덮어써진다는 점을 참고하세요. 이 값은 내부의 TextFileToDocument와 CSVToDocument 컴포넌트로 전달돼요.

더 알아보기 (Learn more)

지원하는 모든 파일 유형의 의존성을 설치하고 MultiFileConverter를 사용해요.

pip install pypdf trafilatura python-pptx python-docx jq openpyxl tabulate pandas

단독으로 쓰기

from haystack.components.converters import MultiFileConverter


converter = MultiFileConverter()
converter.run(sources=["test.txt", "test.pdf"], meta={})

파이프라인에서 쓰기

인덱싱 파이프라인에서도 MultiFileConverter를 쓸 수 있어요.

from haystack import Pipeline
from haystack.components.converters import MultiFileConverter
from haystack.components.preprocessors import DocumentPreprocessor
from haystack.components.writers import DocumentWriter
from haystack.document_stores.in_memory import InMemoryDocumentStore


document_store = InMemoryDocumentStore()

pipeline = Pipeline()
pipeline.add_component("converter", MultiFileConverter())
pipeline.add_component("preprocessor", DocumentPreprocessor())
pipeline.add_component("writer", DocumentWriter(document_store=document_store))
pipeline.connect("converter", "preprocessor")
pipeline.connect("preprocessor", "writer")

result = pipeline.run(data={"sources": ["test.txt", "test.pdf"]})

print(result)
# {'writer': {'documents_written': 3}}