{"id":50412351,"url":"https://github.com/cskwork/document-checker","last_synced_at":"2026-05-31T04:04:57.363Z","repository":{"id":300231952,"uuid":"1005244955","full_name":"cskwork/document-checker","owner":"cskwork","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-20T14:00:41.000Z","size":101,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"initial","last_synced_at":"2025-06-20T15:19:34.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cskwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-19T23:22:17.000Z","updated_at":"2025-06-20T14:00:45.000Z","dependencies_parsed_at":"2025-06-20T15:19:37.938Z","dependency_job_id":"c9091b71-dd79-4828-a605-37f5428fc552","html_url":"https://github.com/cskwork/document-checker","commit_stats":null,"previous_names":["cskwork/document-checker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cskwork/document-checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fdocument-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fdocument-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fdocument-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fdocument-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cskwork","download_url":"https://codeload.github.com/cskwork/document-checker/tar.gz/refs/heads/initial","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cskwork%2Fdocument-checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33718498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-31T04:04:56.747Z","updated_at":"2026-05-31T04:04:57.349Z","avatar_url":"https://github.com/cskwork.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Document Checker\n\n**Document Checker**는 다양한 형식의 문서를 자동으로 처리하고 분석하는 종합적인 문서 관리 시스템입니다. 실시간 파일 모니터링, 지능형 텍스트 분석, 고급 검색 및 리포팅 기능을 통해 효율적인 문서 관리 환경을 제공합니다.\n\n## ⚡ 빠른 시작\n\n```bash\n# 1. 프로젝트 클론\ngit clone \u003crepository-url\u003e\ncd document-checker\n\n# 2. 가상 환경 설정\npython -m venv .venv\nsource .venv/bin/activate  # macOS/Linux\n# .venv\\Scripts\\activate   # Windows\n\n# 3. 의존성 설치\npip install -r requirements.txt\n\n# 4. 애플리케이션 실행\nsh run_servers.sh\n\n# 5. 브라우저에서 접속\n# http://localhost:5002\n```\n\n**지원 형식**: PDF, DOCX, TXT, DOC | **Python**: 3.8+ | **플랫폼**: Windows, macOS, Linux\n\n## 주요 기능\n\n### 🔍 자동 문서 처리\n- **실시간 파일 모니터링**: `input/` 디렉토리에 추가된 문서를 자동으로 감지하고 처리\n- **다양한 문서 형식 지원**: PDF, DOCX, TXT, DOC 등 일반적인 문서 형식 처리\n- **지능형 콘텐츠 추출**: Docling 라이브러리를 활용한 고품질 텍스트 추출\n- **메타데이터 자동 생성**: 파일 정보, 처리 시간, 문서 구조 등 자동 수집\n\n### 🔎 고급 검색 기능\n- **패턴 기반 검색**: 정규식, 대소문자 구분, 전체 단어 매칭 등 다양한 검색 옵션\n- **수식 인식 및 검색**: 수학 공식과 과학 기호 검색 지원\n- **문맥 기반 결과 제공**: 검색 결과에 대한 전후 문맥 정보 제공\n- **실시간 검색**: 빠른 인덱싱을 통한 즉시 검색 결과 제공\n\n### 📊 대시보드 및 리포팅\n- **문서 상태 대시보드**: 처리 완료, 대기 중, 오류 상태별 통계\n- **최근 활동 모니터링**: 최근 업로드된 문서 목록 및 상태 추적\n- **HTML/JSON 리포트 생성**: 검색 결과를 다양한 형식으로 저장 및 공유\n- **사용자 정의 템플릿**: 보고서 형식 개인화 가능\n\n### 🌐 웹 인터페이스\n- **직관적인 파일 업로드**: 드래그 앤 드롭 방식의 파일 업로드\n- **실시간 검색 인터페이스**: 검색 옵션과 결과를 실시간으로 확인\n- **반응형 디자인**: 다양한 화면 크기에 최적화된 UI\n\n## 시스템 아키텍처\n\n### 핵심 컴포넌트\n\n```text\nDocument Checker Architecture\n┌─────────────────┐  ┌──────────────────┐  ┌─────────────────┐\n│   Web UI        │  │   REST API       │  │   File Monitor  │\n│   (Flask)       │←→│   (Flask)        │  │   (Watchdog)    │\n│   Port: 5002    │  │   Port: 5001     │  │                 │\n└─────────────────┘  └──────────────────┘  └─────────────────┘\n         │                       │                    │\n         └───────────────────────┼────────────────────┘\n                                 │\n         ┌───────────────────────────────────────────────────┐\n         │              Core Processing Engine               │\n         └───────────────────────────────────────────────────┘\n         │                       │                          │\n┌─────────────────┐  ┌──────────────────┐  ┌─────────────────┐\n│ DocumentProcessor│  │ ContentAnalyzer  │  │ StorageManager  │\n│ (Docling 통합)   │  │ (검색 \u0026 분석)     │  │ (저장 \u0026 인덱싱) │\n└─────────────────┘  └──────────────────┘  └─────────────────┘\n         │                       │                          │\n         └───────────────────────┼──────────────────────────┘\n                                 │\n         ┌───────────────────────────────────────────────────┐\n         │             ReportGenerator                       │\n         │         (HTML/JSON 리포트 생성)                   │\n         └───────────────────────────────────────────────────┘\n```\n\n### 데이터 흐름\n\n1. **문서 입력**: `input/` 디렉토리에 문서 추가\n2. **자동 감지**: FileMonitor가 새 파일을 감지\n3. **문서 처리**: DocumentProcessor가 Docling을 통해 텍스트 추출\n4. **저장 및 인덱싱**: StorageManager가 문서를 저장하고 검색 인덱스 구축\n5. **검색 및 분석**: ContentAnalyzer가 사용자 쿼리에 대한 검색 수행\n6. **결과 제공**: 웹 인터페이스를 통해 결과 표시 및 리포트 생성\n\n## 🔌 API 참조\n\n### REST API 엔드포인트\n\n#### 문서 관리\n```http\nPOST /api/upload          # 파일 업로드\nGET  /api/documents       # 문서 목록 조회\nGET  /api/documents/{id}  # 특정 문서 조회\nDELETE /api/documents/{id} # 문서 삭제\n```\n\n#### 검색 기능\n```http\nPOST /api/search          # 문서 검색 실행\nGET  /api/search/history  # 검색 이력 조회\n```\n\n#### 리포트 생성\n```http\nPOST /api/reports         # 리포트 생성\nGET  /api/reports         # 리포트 목록\nGET  /api/reports/{id}    # 특정 리포트 다운로드\n```\n\n#### 시스템 정보\n```http\nGET  /api/status          # 시스템 상태 확인\nGET  /api/stats           # 통계 정보 조회\n```\n\n### Python API 사용 예제\n\n#### 문서 처리\n```python\nfrom src.document_processor.processor import DocumentProcessor\n\n# 문서 처리기 초기화\nprocessor = DocumentProcessor()\n\n# 문서 처리\ndocument = processor.process_document(\"/path/to/file.pdf\")\nprint(f\"추출된 텍스트: {document['content'][:100]}...\")\n```\n\n#### 검색 실행\n```python\nfrom src.content_analyzer.analyzer import ContentAnalyzer\n\n# 검색기 초기화\nanalyzer = ContentAnalyzer()\n\n# 검색 실행\nresults = analyzer.execute_search({\n    'query': '찾을 텍스트',\n    'caseSensitive': False,\n    'wholeWord': True,\n    'regex': False\n})\n```\n\n#### 리포트 생성\n```python\nfrom src.report_generator.generator import ReportGenerator\n\n# 리포트 생성기 초기화\ngenerator = ReportGenerator(output_dir=\"./reports\")\n\n# HTML 리포트 생성\nreport = generator.generate_report(\n    search_results=results,\n    report_format='html'\n)\n```\n\n## 🚀 빠른 시작 가이드\n\n### 시스템 요구사항\n\n- **Python**: 3.8 이상\n- **운영체제**: Windows, macOS, Linux\n- **메모리**: 최소 2GB RAM (대용량 문서 처리 시 4GB 권장)\n- **디스크 공간**: 최소 500MB (문서 저장용 추가 공간 필요)\n\n### 1단계: 프로젝트 클론 및 환경 설정\n\n```bash\n# 프로젝트 클론\ngit clone \u003crepository-url\u003e\ncd document-checker\n\n# 가상 환경 생성\npython -m venv .venv\n\n# 가상 환경 활성화\n# macOS/Linux:\nsource .venv/bin/activate\n# Windows:\n.venv\\Scripts\\activate\n\n# 의존성 설치\npip install -r requirements.txt\n```\n\n### 2단계: 디렉토리 구조 준비\n\n```bash\n# 필요한 디렉토리 생성 (자동으로 생성되지 않는 경우)\nmkdir -p input output/documents output/reports\n```\n\n### 3단계: 애플리케이션 실행\n\n```bash\n# 권장: 두 서버 동시 실행\nsh run_servers.sh\n\n# 또는 개별 실행\npython src/user_interface/app.py \u0026    # API 서버 (백그라운드)\npython main.py                        # 메인 애플리케이션\n```\n\n### 4단계: 웹 인터페이스 접속\n\n- **메인 애플리케이션**: [http://localhost:5002](http://localhost:5002)\n- **API 서버** (개발용): [http://localhost:5001](http://localhost:5001)\n\n## 📖 사용법\n\n### 문서 업로드 및 처리\n\n1. **자동 처리**: `input/` 디렉토리에 문서 파일을 복사하면 자동으로 처리됩니다.\n2. **웹 업로드**: 브라우저에서 파일을 드래그 앤 드롭하여 업로드할 수 있습니다.\n3. **지원 형식**: PDF, DOCX, TXT, DOC 파일이 지원됩니다.\n\n### 문서 검색\n\n1. **기본 검색**: 검색창에 찾고자 하는 키워드를 입력합니다.\n2. **고급 옵션**:\n   - **대소문자 구분**: 정확한 대소문자 매칭\n   - **전체 단어**: 완전한 단어만 매칭\n   - **정규식**: 고급 패턴 매칭\n   - **수식 검색**: 수학 공식 및 과학 기호 검색\n\n### 리포트 생성\n\n1. 검색 결과 페이지에서 \"리포트 생성\" 버튼 클릭\n2. HTML 또는 JSON 형식 선택\n3. 생성된 리포트는 `output/reports/` 디렉토리에 저장됩니다.\n\n### 대시보드 활용\n\n- **문서 상태**: 전체 문서 처리 현황을 한눈에 확인\n- **최근 활동**: 최근 업로드된 문서들의 상태 모니터링\n- **통계 정보**: 문서 형식별, 상태별 통계 확인\n\n## 🔧 개발 및 테스트\n\n### 테스트 실행\n\n```bash\n# 전체 테스트 실행\npython -m unittest discover -s tests -v\n\n# 개별 컴포넌트 테스트\npython -m unittest tests.test_content_analyzer\npython -m unittest tests.test_document_processor\npython -m unittest tests.test_storage_manager\npython -m unittest tests.test_report_generator\n\n# 통합 테스트\npython -m unittest tests.test_docling_integration\n```\n\n### 개발 환경 설정\n\n```bash\n# 개발용 의존성 설치 (필요시)\npip install -r requirements-dev.txt\n\n# 코드 품질 검사\nflake8 src/\nblack src/\n\n# 의존성 업데이트\npip freeze \u003e requirements.txt\n```\n\n## 🛠️ 문제 해결\n\n### 일반적인 문제\n\n#### 포트 충돌 오류\n```bash\n# 포트 사용 중인 프로세스 확인\nlsof -i :5001\nlsof -i :5002\n\n# 프로세스 종료\nkill -9 \u003cPID\u003e\n```\n\n#### 의존성 충돌\n```bash\n# 가상 환경 재생성\ndeactivate\nrm -rf .venv\npython -m venv .venv\nsource .venv/bin/activate  # macOS/Linux\npip install -r requirements.txt\n```\n\n#### 문서 처리 오류\n- `output/` 디렉토리 권한 확인\n- Docling 라이브러리 설치 확인\n- 로그 파일 확인 (`logs/` 디렉토리)\n\n### 성능 최적화\n\n#### 대용량 문서 처리\n- 시스템 메모리 4GB 이상 권장\n- 문서 크기 제한: 50MB 이하 권장\n- 배치 처리 크기 조정 가능\n\n#### 검색 성능 향상\n- 문서 인덱스 정기적 재구축\n- 검색 캐시 활용\n- 정규식 최적화\n\n## 📝 라이센스 및 기여\n\n### 라이센스\n이 프로젝트는 MIT 라이센스 하에 배포됩니다.\n\n### 기여 방법\n1. 이슈 등록 및 버그 리포트\n2. 기능 제안 및 개선 아이디어\n3. 코드 기여 및 풀 리퀘스트\n4. 문서 개선 및 번역\n\n### 연락처\n- 프로젝트 관리자: [이메일 주소]\n- 이슈 추적: GitHub Issues\n- 토론: GitHub Discussions\n\n---\n\n## 📋 개발 로그\n\n### 2025-05-20\n\n- 대시보드 기능 개선:\n  - `ReportGenerator.get_document_statistics` 메소드 수정하여 처리 상태별(처리 완료, 대기 중, 오류) 문서 수 통계 추가\n  - 최근 5개 문서 (ID, 파일명, 상태, 업로드 시간) 목록 기능 추가\n  - 관련 로깅 기능 (`logging` 모듈) 추가 및 임포트 확인\n\n### 2025-05-19\n\n- ReportGenerator 구현 완료\n  - HTML 및 JSON 형식의 보고서 생성\n  - 사용자 정의 가능한 템플릿 시스템\n  - 문서 메타데이터 통합\n  - 단위 테스트 포함\n\n### 2025-05-18\n\n- 검색 기능 개선:\n  - 백엔드에서 검색 결과를 문서별로 그룹화하고 프론트엔드 요구사항에 맞게 데이터 구조를 재가공하여 전달하도록 수정 (`app.py`).\n  - `ContentAnalyzer`의 `execute_search`는 모든 일치 항목의 통합 리스트를, `_search_document`는 프론트엔드 표시에 필요한 상세 필드(text, context_before, context_after 등)를 포함한 개별 일치(match) 객체를 생성하도록 수정.\n  - `StorageManager`에 문서 ID로 메타데이터를 조회하는 `get_document_metadata` 메소드 추가.\n  - 이 변경으로 프론트엔드에서 발생하던 `results.forEach is not a function` JavaScript 오류 해결.\n\n- 고급 수식 인식 기능 구현\n  - 수식 인식 및 추출\n  - 수식 정규화\n  - 수식 변수 추출\n  - 수식 유형 분류\n  - 수식 검색 및 매칭\n  - docling 모듈 통합 준비\n\n- StorageManager 구현 완료\n  - 파일 시스템 모니터링\n  - 문서 저장 및 인덱싱\n  - 캐싱 메커니즘\n  - 문서 검색 및 필터링\n\n### 2025-05-17\n\n- 프로젝트 초기화\n- Task Master 통합\n- 기본 프로젝트 구조 설정 ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Fdocument-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcskwork%2Fdocument-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcskwork%2Fdocument-checker/lists"}