Files
ocr_macro/README.md
2025-08-01 10:05:24 +09:00

89 lines
3.4 KiB
Markdown

# 문서 정보 추출 및 비교 도구
이 프로젝트는 문서(이미지, PDF)에서 정보를 추출하고, 그 결과를 원본 문서와 나란히 비교할 수 있는 도구를 제공합니다.
## 구성 요소
1. **추출 스크립트 (`workspace/process_directory.py`)**: 지정된 디렉터리의 모든 파일에 대해 정보 추출 API를 호출하고 결과를 JSON 파일로 저장합니다.
2. **비교 웹앱 (`workspace/app.py`)**: Streamlit 기반의 웹 애플리케이션으로, 원본 문서와 추출된 JSON 결과를 업로드하여 시각적으로 비교할 수 있습니다.
---
## 1. 추출 스크립트 사용법 (`process_directory.py`)
### 사전 준비
스크립트를 실행하기 위해서는 Python 3.6 이상이 필요합니다.
#### 1.1. 환경 변수 설정
API 서버의 정보는 민감 정보이므로, `workspace` 디렉터리 안에 `.env` 파일을 생성하여 관리합니다.
`.env` 파일 예시 (`workspace/.env`):
```env
BASE_URL="http://172.0.0.1:8888"
API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
```
**중요:**`.env` 파일은 `.gitignore`에 의해 버전 관리에서 자동으로 제외됩니다.
#### 1.2. 의존성 설치
프로젝트 루트 디렉터리에서 다음 명령어를 실행하여 필요한 라이브러리를 설치합니다.
```bash
pip install -r requirements.txt
```
### 실행 방법
프로젝트 루트 디렉터리에서 다음 형식으로 스크립트를 실행합니다.
```bash
python workspace/process_directory.py [입력_디렉터리] [옵션]
```
#### 인자 설명
- `input_dir` (필수): 처리할 파일들이 들어있는 입력 디렉터리의 경로입니다.
- `-o, --output_dir` (선택): 결과 JSON 파일들을 저장할 출력 디렉터리입니다. (기본값: `results`)
- `--endpoint` (선택): 호출할 API 엔드포인트를 지정합니다. (`i18n` 또는 `d6c`, 기본값: `i18n`)
- `--model` (선택): 사용할 특정 LLM 모델의 이름을 지정합니다.
#### 실행 예시
```bash
# 'source_documents/data'에 있는 파일들을 'i18n' 엔드포인트로 처리
python workspace/process_directory.py source_documents/data
# 'd6c' 엔드포인트를 사용하여 처리하고 결과를 'my_results' 폴더에 저장
python workspace/process_directory.py source_documents/data2 --endpoint d6c -o my_results
```
---
## 2. 비교 웹앱 사용법 (`app.py`)
이 웹앱을 사용하여 원본 문서와 `process_directory.py` 실행 결과로 생성된 JSON 파일을 시각적으로 비교할 수 있습니다.
### 실행 방법
프로젝트 루트 디렉터리에서 다음 명령어를 실행합니다.
```bash
streamlit run workspace/app.py
or
docker copmose up
```
위 명령어를 실행하면 웹 브라우저에서 비교 도구가 열립니다.
### 사용 절차
1. 웹앱이 실행되면 사이드바에 파일 업로드 영역이 나타납니다.
2. **"원본 문서 파일(들)을 업로드하세요."** 버튼을 클릭하여 하나 이상의 문서 파일(PDF, PNG, JPG 등)을 업로드합니다.
3. **"결과 JSON 파일(들)을 업로드하세요."** 버튼을 클릭하여 해당 문서들의 추출 결과인 JSON 파일들을 업로드합니다.
4. 파일들이 성공적으로 매칭되면, **"비교할 파일을 선택하세요."** 드롭다운 메뉴에 파일 목록이 나타납니다.
5. 목록에서 파일을 선택하면, 왼쪽에는 원본 문서가, 오른쪽에는 JSON 데이터가 표시되어 내용을 비교할 수 있습니다.