목요일, 8월 13, 2026

pdf parser 체험기

pdf파일을 텍스트로 변환하는 작업을 진행하다가 이런것도 있다는 것을 이제야 알았네요

python만 사용하다보니 pdfplumber를 사용해서 이리저리 헤매고 있었는데 opendataloader-pdf라는 무시무시한 녀석을 만나버렸네요


pdf파일을 다양한 포맷으로 저장해줘서 이리저리 사용해보고 있습니다.


perplexity에게 이거 어떻게 사용하는지 한번 물어보고 파이썬 코드도 작성해달라고 했는데, 역시 기대를 저버리지 않네요 :)

※ 물론 집에서 사용하는 PC 설치된 java 버전이 낮아서 java를 버전 업 해서 설치했다는 것 제외하고는 아무런 문제없이 작동하고 있습니다. 


---

기존의 `pdfplumber`, `PyMuPDF(fitz)`, `pdfminer.six`처럼 텍스트만 추출하는 것이 아니라, **PDF → AI(RAG)가 바로 사용할 수 있는 Markdown / JSON / HTML / Tagged PDF로 변환하는 것을 목표로 만든 프로젝트**입니다. 특히 논문, 보고서, 특허처럼 레이아웃이 복잡한 PDF를 LLM이 이해하기 좋은 형태로 변환하는 데 초점이 맞춰져 있습니다. ([GitHub][1])

---

전체 구조(동작 원리)

OpenDataLoader는 크게 두 가지 모드가 있습니다.

```
                                 PDF
                                  │
        ┌─────────┴─────────┐
        │                                                 │
        │         Local(Java)                     │
        │                                                 │
        └──────┬────────────┘
                          │
                   Layout Analysis
                          │
                   Reading Order(XY-Cut++)
                          │
                   Semantic Detection
                          │
               Heading/Table/Image/List
                          │
                 Markdown / JSON / HTML
```

또는

```

                         PDF
                          │
                Local Java Parser
                          │
              복잡한 페이지인가?
          │                                 │
         NO                                YES
          │                                 │
          │                          AI Backend
          │                                  │
          └──────┬──────┘
                            │
                 최종 결과 생성
```

이것을 **Hybrid Mode**라고 합니다. ([GitHub][2])


기본모드은 Local Mode는 AI를 사용하지 않고 Java엔진이 알아서 처리합니다. 두번째 언급한 Hybrid Mode에서는 java가 처리할 수 있는 페이지는 기본모드처럼 java가 처리하기 어려운 복잡한 페이지는 AI가 처리한다고 하네요 ㅎㅎ (아직 Hybrid는 사용하지 못해봐서... API key를 요청하는지는 모르겠네요. 설치할때 에러났어요 Orz)

---


설치 방법

## 기본 설치

필수 조건

```

Python >=3.10

Java >=11

```

먼저 Java 확인

```bash

java -version

```

설치

```bash

pip install -U opendataloader-pdf

```

CLI 설치도 같이 됩니다. ([OpenDataLoader][3])

---

## Hybrid 설치

```bash

pip install "opendataloader-pdf[hybrid]"

```

AI Backend 포함 설치입니다. ([GitHub][2])


Java는 설치할 때 확인하지 않습니다. java11이 설치되지 않았다면 opendataloader-pdf 라이브러리를 사용해서 pdf 파일을 파싱할때 에러가 납니다. 그 후에 java 11 버전 설치해도 괜찮습니다. 


---


Python 사용법

```python

import opendataloader_pdf


opendataloader_pdf.convert(

    input_path="paper.pdf",

    output_dir="output",

    format="markdown"

)

```

---


다른 PDF라이브러리와의 차이점

| 라이브러리                          | 텍스트 추출 | 레이아웃 유지 | 표 추출 | Bounding Box | OCR       | RAG 적합성 |
| ----------------------------------- | -------------- | ------------------ | --------- | ------------------- | ----------- | ---------------- |
| pdfminer                             | ✔               | ✖                    | ✖        | ✖                     | ✖            | 낮음             |
| PyMuPDF                           | ✔               | 일부                | 일부    | ✔                     | ✖            | 보통             |
| pdfplumber                         | ✔               | 일부                | ✔        | ✔                     | ✖            | 보통             |
| Docling                               | ✔               | ✔                    | ✔        | ✔                     | ✔            | 높음             |
| **OpenDataLoader PDF**  | ✔               | ✔                    | ✔        | ✔                     | ✔§          | 매우 높음     |

§Hybrid

OpenDataLoader의 가장 큰 장점은 **Markdown(LLM 입력용), JSON(정밀 제어용), Bounding Box(출처 추적용), OCR 및 AI 기반 복잡한 표/수식 처리(Hybrid 모드)**를 하나의 도구에서 제공한다는 점입니다. 그래서 특히 **논문, 특허, 매뉴얼, 기술 문서**를 RAG 파이프라인에 넣기 위한 전처리 도구로 설계되어 있습니다. ([GitHub][1])


댓글 없음: