google/langextract

LLM 기반 비정형 텍스트 구조화 추출 Python 라이브러리 (Google 제작, Gemini/OpenAI/Ollama 지원)

개발 재료맘대로 써도 됨 · Apache-2.0LLM 도구·RAGPython난이도
37,492+348이번 주0
2,591포크71이슈
데모·홈페이지 열기pypi.org

중간맛 분석

LangExtract는 Python 라이브러리로, Gemini(Flash/Pro)·OpenAI·Ollama 등 다양한 LLM 백엔드를 지원합니다. few-shot 예시만으로 도메인 특화 추출 스키마를 정의하고, 텍스트 청킹·병렬 처리·멀티패스 전략으로 장문서 처리를 최적화합니다. pip install langextract 키 설정만으로 즉시 사용 가능하며, 임상 노트·방사선 보고서·문학 작품 등 다양한 도메인에서 바로 쓸 수 있는 예제가 제공됩니다. Vertex AI 배치 ·OpenAI 배치 도 지원해 대규모 운영 환경에도 적합합니다.

이런 레포예요

이럴 때 쓰면 좋아요

  • 임상 노트·방사선 보고서 등 의료 문서에서 구조화된 정보를 자동 추출할 때
  • 소설·논문 등 장문 텍스트에서 등장인물·감정·관계 등 엔티티를 대량으로 수집할 때
  • 비정형 업무 문서를 LLM으로 파싱하여 DB나 스프레드시트에 적재하는 파이프라인을 구축할 때

핵심 기능

추출 결과를 원본 텍스트 문자 위치에 매핑하는 소스 그라운딩텍스트 청킹·병렬 처리·멀티패스를 활용한 장문서 고회수율 추출인터랙티브 HTML 시각화로 수천 개 엔티티를 원문 맥락과 함께 검토

대안 대비 차별점

추출 결과마다 원본 텍스트 위치(char_interval)를 추적하고 환각을 자동 탐지하는 소스 그라운딩 기능이 LangChain·Instructor 등 유사 도구와의 핵심 차별점이다.

준비물

  • Python 3.10 이상
  • Gemini/OpenAI API 키 (클라우드 모델 사용 시)
  • Ollama 설치 및 실행 (로컬 LLM 사용 시)

바로 시작하기

  1. 패키지 설치
pip install langextract
  1. API 키 환경변수 설정 (Gemini 사용 시)
export LANGEXTRACT_API_KEY="your-api-key-here"
  1. 추출 작업 정의 및 실행 (Python 코드)
python - <<'EOF'
import langextract as lx
import textwrap

prompt = textwrap.dedent("""\
    Extract characters, emotions, and relationships in order of appearance.
    Use exact text for extractions. Do not paraphrase or overlap entities.
    Provide meaningful attributes for each entity to add context.""")

examples = [
    lx.data.ExampleData(
        text="ROMEO. But soft! What light through yonder window breaks? It is the east, and Juliet is the sun.",
        extractions=[
            lx.data.Extraction(extraction_class="character", extraction_text="ROMEO", attributes={"emotional_state": "wonder"}),
        ]
    )
]

result = lx.extract(
    text_or_documents="Lady Juliet gazed longingly at the stars, her heart aching for Romeo",
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-3.5-flash",
)
print(result)
EOF
  1. 결과를 JSONL 파일로 저장 및 HTML 시각화 생성
python - <<'EOF'
import langextract as lx
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl", output_dir=".")
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f:
    f.write(html_content.data if hasattr(html_content, 'data') else html_content)
EOF

이 레포로 만든 것들

🖋 완주 인증하기

아직 이 레포로 만든 완주 인증이 없어요. 첫 밥도장을 찍어보세요!

별 추이 · 7일

37,492+348 / 7일

활용성 · 따라 만들기 좋은가

베스트 샘플샘플 점수 68/100
  • 관대한 라이선스
  • 테스트 있음
  • 예제 디렉토리
  • 최근 활동
  • AGENTS.md
  • llms.txt
  • 템플릿

🟢 최근 활동 있음 · 2025년 생성

시식평 · 먹어본 사람 한마디

아직 시식평이 없어요. 먹어보셨다면 첫 한마디를 남겨주세요.

다른 레포 시식평 구경하기 →

「LLM 도구·RAG」 이런 레포, 매주 받아보실래요?

매주 월요일 아침, 골라 담은 밥상만. 광고 없이 · 언제든 해지.

이 레포에 깃밥 배지 달기

[![깃밥](https://www.gitbap.com/badge/google/langextract.svg)](https://www.gitbap.com/r/google/langextract)

🔌 클로드에서 바로 써보기

깃밥을 클로드에 연결하면 이런 레포를 클로드·커서·Codex에서 바로 찾고 체험할 수 있어요.

방법 ① 커넥터 URL

클로드 설정 → 커넥터에 이 주소를 붙여넣기.

https://www.gitbap.com/api/mcp
방법 ② 플러그인 (체험까지)

플러그인을 설치하면 /gitbap-trending·/gitbap-try 슬래시 커맨드로 레포를 그 자리에서 체험. Claude Code에서 아래 두 줄을 차례로 실행하세요.

/plugin marketplace add jakeparkcolde/gitbap-cowork
/plugin install gitbap-cowork@gitbap
연결 방법 자세히 →

AI가 README 기반으로 요약했습니다 · 원문 보기