adithya-s-k/omniparse
요약
OmniParse는 비정형 데이터를 LLM 애플리케이션에 최적화된 구조화된 데이터로 변환하는 플랫폼입니다. 문서, 이미지, 오디오, 비디오 등 다양한 형식을 마크다운으로 변환하여 RAG 및 미세 조정에 즉시 활용할 수 있게 돕습니다.
핵심 포인트
- 모든 비정형 데이터를 구조화된 마크다운으로 변환
- 외부 API 없이 로컬 환경 및 T4 GPU에서 구동 가능
- 문서, 표, 이미지, 오디오, 비디오 등 약 20가지 형식 지원
- Docker 및 Skypilot을 통한 손쉬운 배포 지원
중요
OmniParse는 모든 비정형 데이터 (unstructured data)를 GenAI (LLM) 애플리케이션에 최적화된 구조화되고 실행 가능한 데이터 (structured, actionable data)로 수집 및 파싱 (parsing)하는 플랫폼입니다. 문서, 표, 이미지, 비디오, 오디오 파일 또는 웹 페이지를 다루든 관계없이, OmniParse는 귀하의 데이터를 RAG (Retrieval-Augmented Generation), 미세 조정 (fine-tuning) 등과 같은 AI 애플리케이션에 즉시 사용할 수 있도록 깨끗하고 구조화된 상태로 준비합니다.
OmniParse.1.mp4
✅ 완전한 로컬 (local) 환경, 외부 API 사용 없음
✅ T4 GPU에서 구동 가능
✅ 약 20가지 파일 형식 지원
✅ 문서, 멀티미디어 및 웹 페이지를 고품질의 구조화된 마크다운 (markdown)으로 변환
✅ 표 추출 (table extraction), 이미지 추출/캡셔닝 (image extraction/captioning), 오디오/비디오 전사 (audio/video transcription), 웹 페이지 크롤링 (web page crawling)
✅ Docker 및 Skypilot을 사용하여 쉽게 배포 가능
✅ Colab 친화적
✅ Gradio 기반의 대화형 UI (Interactive UI)
데이터가 다양한 형태와 크기로 들어오기 때문에 이를 처리하는 것은 매우 도전적인 과제입니다. OmniParse는 문서, 이미지, 오디오, 비디오 및 웹 콘텐츠와 같은 모든 유형의 데이터를 수집하고, GenAI (LLM) 친화적인 가장 구조화되고 실행 가능한 출력을 얻을 수 있는 수집/파싱 (ingestion/parsing) 플랫폼을 지향합니다.
중요
서버는 Linux 기반 시스템에서만 작동합니다. 이는 Windows 또는 macOS와 호환되지 않는 특정 종속성 (dependencies) 및 시스템별 설정 때문입니다.
git clone https://github.com/adithya-s-k/omniparse
cd omniparse
가상 환경 (Virtual Environment) 생성:
conda create -n omniparse-venv python=3.10
conda activate omniparse-venv
종속성 (Dependencies) 설치:
poetry install
# 또는
pip install -e .
...
Docker를 사용하여 OmniParse를 사용하려면 다음 명령어를 실행하십시오:
- Docker Hub에서 OmniParse API Docker 이미지를 가져옵니다 (Pull):
- 8000번 포트를 개방하여 Docker 컨테이너를 실행합니다: 👉🏼Docker Image
docker pull savatar101/omniparse:0.1
# GPU에서 실행하는 경우
docker run --gpus all -p 8000:8000 savatar101/omniparse:0.1
...
또는, 로컬에서 Docker 이미지를 빌드하는 것을 선호하는 경우: 다음과 같이 Docker 컨테이너를 실행하십시오:
docker build -t omniparse .
# GPU를 사용하는 경우
docker run --gpus all -p 8000:8000 omniparse
서버 실행:
python server.py --host 0.0.0.0 --port 8000 --documents --media --web
--documents
: 문서 파싱 (Parsing) 및 인제스션 (Ingestion)을 돕는 모든 모델을 로드합니다 (Surya OCR 모델 시리즈 및 Florence-2).
--media
: 오디오 및 비디오 파일을 전사 (Transcribe)하기 위한 Whisper 모델을 로드합니다.
--web
: Selenium 크롤러 (Crawler)를 설정합니다.
모델 다운로드: 서버를 시작하기 전에 모델을 미리 다운로드하고 싶은 경우:
python download.py --documents --media --web
--documents
: 문서 파싱 (Parsing) 및 인제스션 (Ingestion)을 돕는 모든 모델을 로드합니다 (Surya OCR 모델 시리즈 및 Florence-2).
--media
: 오디오 및 비디오 파일을 전사 (Transcribe)하기 위한 Whisper 모델을 로드합니다.
--web
: Selenium 크롤러 (Crawler)를 설정합니다.
| 유형 | 지원되는 확장자 |
|---|---|
| 문서 (Documents) | .doc, .docx, .pdf, .ppt, .pptx |
| ... |
Langchain, LlamaIndex, Haystack 통합과 호환되는 클라이언트 라이브러리가 곧 출시될 예정입니다.
엔드포인트 (Endpoint): /parse_document
메서드 (Method): POST
PDF, PowerPoint 또는 Word 문서를 파싱 (Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/document" http://localhost:8000/parse_document
엔드포인트 (Endpoint): /parse_document/pdf
메서드 (Method): POST
PDF 문서를 파싱 (Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/document.pdf" http://localhost:8000/parse_document/pdf
엔드포인트 (Endpoint): /parse_document/ppt
메서드 (Method): POST
PowerPoint 프레젠테이션을 파싱 (Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/presentation.ppt" http://localhost:8000/parse_document/ppt
엔드포인트 (Endpoint): /parse_document/docs
메서드 (Method): POST
Word 문서를 파싱 (Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/document.docx" http://localhost:8000/parse_document/docs
엔드포인트 (Endpoint): /parse_image/image
메서드 (Method): POST
이미지 파일 (PNG, JPEG, JPG, TIFF, WEBP)을 파싱 (Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/image.jpg" http://localhost:8000/parse_media/image
엔드포인트 (Endpoint): /parse_image/process_image
메서드 (Method): POST
특정 작업(Task)으로 이미지를 처리합니다.
가능한 작업(Task) 입력값:
OCR | OCR with Region | Caption | Detailed Caption | More Detailed Caption | Object Detection | Dense Region Caption | Region Proposal
Curl 명령어:
curl -X POST -F "image=@/path/to/image.jpg" -F "task=Caption" -F "prompt=Optional prompt" http://localhost:8000/parse_media/process_image
인자(Arguments):
image
: 이미지 파일
task
: 처리 작업 (예: Caption, Object Detection)
prompt
: 특정 작업을 위한 선택적 프롬프트 (Optional prompt)
엔드포인트 (Endpoint): /parse_media/video
메서드 (Method): POST
비디오 파일 (MP4, AVI, MOV, MKV)을 파싱(Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/video.mp4" http://localhost:8000/parse_media/video
엔드포인트 (Endpoint): /parse_media/audio
메서드 (Method): POST
오디오 파일 (MP3, WAV, FLAC)을 파싱(Parse)합니다.
Curl 명령어:
curl -X POST -F "file=@/path/to/audio.mp3" http://localhost:8000/parse_media/audio
엔드포인트 (Endpoint): /parse_website/parse
메서드 (Method): POST
URL이 주어진 웹사이트를 파싱(Parse)합니다.
Curl 명령어:
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://example.com"}' http://localhost:8000/parse_website
인자(Arguments):
url
: 파싱할 웹사이트의 URL
🦙 LlamaIndex | Langchain | Haystack 통합 기능 출시 예정
📚 배치 처리 (Batch processing) 데이터
⭐ 지정된 스키마 (Schema)를 기반으로 한 동적 청킹 (Dynamic chunking) 및 구조화된 데이터 추출
🛠️ 하나의 마법 같은 API: 파일을 입력하고 원하는 것을 프롬프트로 전달하기만 하면, 나머지는 저희가 처리합니다.
🔧 동적 모델 선택 및 외부 API 지원
📄 여러 파일을 한 번에 처리하기 위한 배치 처리 (Batch processing)
📦 Surya OCR 및 Marker를 대체할 새로운 오픈 소스 모델
최종 목표: 현재 사용 중인 모든 서로 다른 모델들을, 어떤 유형의 데이터든 파싱하여 필요한 데이터를 얻을 수 있는 단일 멀티모달 모델 (MultiModel Model)로 교체하는 것입니다.
딥러닝 모델을 사용하므로 최소 8~10 GB의 VRAM을 갖춘 GPU가 필요합니다.
문서 파싱의 한계 (Document Parsing Limitations)
- 기반 PDF 파서인 Marker는 수식을 감지한 후 변환해야 하므로, 모든 수식을 100% LaTeX로 변환하지는 못합니다.
- 영어 파싱에는 능숙하지만, 중국어와 같은 언어는 어려움을 겪을 수 있습니다.
- 표(Tables)가 항상 100% 정확하게 형식이 지정되지는 않으며, 텍스트가 잘못된 열(column)에 위치할 수 있습니다.
- 공백(Whitespace)과 들여쓰기(indentations)가 항상 준수되지는 않습니다.
- 모든 줄(lines) 또는 스팬(spans)이 적절하게 결합되지 않을 수 있습니다.
- 이 방식은 많은 OCR이 필요하지 않은 디지털 PDF에서 가장 잘 작동합니다. 속도에 최적화되어 있으며, 오류 수정을 위해 제한적인 OCR이 사용됩니다.
- 모든 모델을 GPU에 담기 위해 가장 작은 변체(variants)들을 사용하고 있으며, 이는 업계 최고 수준의 성능을 제공하지 못할 수도 있습니다.
OmniParse는 GPL-3.0 라이선스 하에 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하세요.
이 프로젝트는 내부적으로 Marker를 사용하며, Marker는 준수해야 하는 상업용 라이선스를 가지고 있습니다. 세부 사항은 다음과 같습니다:
Marker 및 Surya OCR 모델은 개발 및 훈련 비용을 충당하면서도 가능한 한 널리 접근할 수 있도록 설계되었습니다. 연구 및 개인적 사용은 항상 허용되지만, 상업적 사용에는 몇 가지 제한이 있습니다. 모델의 가중치(weights)는 cc-by-nc-sa-4.0 라이선스 하에 있습니다. 그러나 최근 12개월 동안 총 매출이 500만 달러 미만이고, 평생 모금한 VC/엔젤 투자금이 500만 달러 미만인 조직에 대해서는 이 제한이 면제됩니다. GPL 라이선스 요구 사항을 제거(이중 라이선스)하거나 매출 제한을 초과하여 가중치를 상업적으로 사용하려면 제공된 옵션을 확인하세요. 모델 가중치의 라이선스에 대한 자세한 정보는 Marker를 참조하십시오.
이 프로젝트는 Vik Paruchuri가 만든 놀라운 Marker 프로젝트를 기반으로 구축되었습니다. 이 프로젝트가 제공한 영감과 토대에 대해 감사를 표합니다. 이 프로젝트에서 광범위하게 사용된 OCR 모델인 Surya-OCR과 Texify, 그리고 기여해 준 Crawl4AI에 특별히 감사드립니다.
사용 중인 모델:
- Surya OCR, Detect, Layout, Order 및 Texify
- Florence-2 base
- Whisper Small
이 모델들에 기여해 주신 저자분들께 감사드립니다.
문의 사항이 있으시면 adithyaskolavi@gmail.com으로 연락해 주시기 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기