OCR 없이 200ms 만에 PDF를 마크다운으로 변환하는 Rust 라이브러리
Rust 기반의 고성능 PDF 분석 도구로, 텍스트 기반 PDF와 스캔된 PDF를 지능적으로 분류하고 텍스트를 구조화된 마크다운으로 빠르게 추출합니다.
주요 기능
- 콘텐츠 스트림 샘플링을 통한 10-50ms 내 PDF 유형 분류
- 폰트 크기 비율 기반의 H1-H4 헤딩 및 리스트 구조 감지
- 드로잉 연산자와 텍스트 정렬을 결합한 하이브리드 테이블 탐지
- 신문 스타일의 다중 열 레이아웃 및 읽기 순서 자동 인식
- Broken 폰트 인코딩 자동 감지 및 OCR 필요 페이지 식별
어떻게 동작하는가
PDF의 xref 테이블과 페이지 트리를 부분적으로 파싱하여 텍스트(Tj/TJ) 및 이미지(Do) 연산자 존재 여부를 샘플링하고, lopdf를 통해 추출된 텍스트 아이템의 좌표와 폰트 통계를 분석하여 레이아웃을 재구성합니다. 문서 로드 시 메모리를 공유하여 분류와 추출 단계 사이의 중복 I/O를 제거하는 구조로 설계되었습니다. (근거: README Architecture 및 How classification works 섹션 참조).", "entity_tags": [{"slug": "rust", "display_name": "Rust", "entity_type": "library"}, {"slug": "ocr-routing", "display_name": "OCR Routing", "entity_type": "optimization"}], "background_terms": [{"term": "ocr-routing", "term_display": "OCR Routing", "term_ko": "OCR 라우팅", "definition_ko": "문서의 특성을 미리 분석하여 텍스트 추출이 가능한 파일은 로컬 엔진으로 처리하고, 이미지로 된 파일만 고비용의 OCR 서비스로 보내는 최적화 기법입니다. 전체 처리 비용과 지연 시간을 획기적으로 줄이는 데 중요합니다.", "entity_type": "optimization"}, {"term": "content-stream", "term_display": "Content Stream", "term_ko": "콘텐츠 스트림", "definition_ko": "PDF 페이지 내의 텍스트, 그래픽, 이미지를 그리는 명령어를 포함하는 데이터 스트림입니다. 이를 직접 분석하면 렌더링 없이도 문서의 구조와 텍스트 정보를 빠르게 파악할 수 있습니다.", "entity_type": "architecture"}, {"term": "cid-font", "term_display": "CID Font", "term_ko": "CID 폰트", "definition_ko": "대규모 문자 집합을 지원하기 위해 고안된 PDF 폰트 형식으로, 문자 식별자(CID)를 사용합니다. ToUnicode CMap 매핑이 올바르지 않으면 텍스트 추출 시 글자가 깨지는 현상이 발생할 수 있습니다.", "entity_type": "architecture"}], "code_snippets": [{"language": "python", "snippet": "import pdf_inspector\n\nresult = pdf_inspector.process_pdf(\"document.pdf\")\nprint(result.pdf_type) # \"text_based\", \"scanned\", \"image_based\", \"mixed\"\nprint(result.markdown) # Markdown string or None", "context_ko": "Python 바인딩을 사용하여 PDF 유형을 분류하고 마크다운을 추출하는 예시", "section_index": -1}, {"language": "bash", "snippet": "# Detection + layout analysis (tables, columns)\ncargo run --bin detect-pdf -- document.pdf --analyze --json", "context_ko": "CLI 도구를 사용하여 PDF의 테이블 및 레이아웃 분석 결과를 JSON으로 출력하는 예시", "section_index": -1}]}
3.3k
Stars
247
Forks
+218
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.