레이블이 pdfplumber인 게시물을 표시합니다. 모든 게시물 표시
레이블이 pdfplumber인 게시물을 표시합니다. 모든 게시물 표시

목요일, 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])