Metadata-Version: 2.4
Name: kr-law-extractor
Version: 0.1.0
Summary: 법제처 OpenAPI에서 한국 법령 조문을 수집해 Silver 포맷 JSON으로 저장하는 패키지
Project-URL: Repository, https://github.com/lexegra/law-mcp
License: MIT
Keywords: korean-law,law,legal,openapi,법령,법제처
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: Korean
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.12
Requires-Dist: httpx>=0.27.0
Requires-Dist: lxml>=5.2.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: tenacity>=9.0.0
Description-Content-Type: text/markdown

# kr-law-extractor

법제처 OpenAPI에서 한국 법령 조문을 수집하여 Silver 레이어 포맷의 JSON 파일로 저장하는 Python 패키지입니다.

## 설치

```bash
pip install kr-law-extractor
```

## 사용법

```python
from law_extractor import extract

# 법령명 리스트 → JSON 파일 생성
files = extract(
    ["소득세법", "국세기본법", "근로기준법"],
    output_dir="./output",
    oc="your-oc-key",   # 법제처 API OC 키
)
# ./output/소득세법.json, ./output/국세기본법.json, ... 생성
```

환경변수로 OC 키를 설정할 수도 있습니다:

```bash
export LAW_OC="your-oc-key"
```

```python
from law_extractor import extract

extract(["소득세법"], output_dir="./output")  # oc 파라미터 생략 가능
```

## 출력 포맷

각 법령마다 `{법령명}.json` 파일이 생성됩니다. 파일 내용은 조문(Article) 단위 레코드의 배열입니다:

```json
[
  {
    "law_mst": "001565",
    "jo_number": "000001",
    "jo_branch_number": null,
    "law_name_ko": "소득세법",
    "law_category": "법률",
    "ministry_name": "기획재정부",
    "enforcement_date": "2024-01-01",
    "jo_title": "목적",
    "jo_content": "이 법은 ...",
    "content_hash": "sha256-hex",
    "has_appendix": false,
    "references": []
  }
]
```

## API OC 키 발급

[법제처 오픈API 서비스](https://www.law.go.kr/LSW/openapiGuide.do) 에서 이메일 주소를 OC 값으로 사용합니다.

## 파라미터

| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| `law_names` | `list[str]` | 필수 | 수집할 법령명 목록 |
| `output_dir` | `str \| Path` | `"."` | JSON 저장 디렉토리 |
| `oc` | `str \| None` | `None` | 법제처 API OC 키 (없으면 `LAW_OC` 환경변수) |
| `concurrency` | `int` | `3` | 동시 HTTP 요청 수 |

## 동작 원리

1. **MST 조회**: `lawSearch` API로 법령명 → 법령ID(MST) 변환
2. **XML 수집**: `lawService` API로 조문 전체 XML 다운로드
3. **파싱**: 조문 단위로 평탄화 (조문 1개 = 레코드 1개, 항/호/목은 본문에 병합)
4. **해싱**: 조문제목 + 조문내용 + 시행일자 기반 SHA-256 해시 계산
5. **참조 추출**: 조문 내 타법 참조(낫표), 내부 조문 참조 그래프 추출
6. **저장**: Silver 레이어 포맷 JSON 파일로 저장
