Skip to content

v0.2.0

Choose a tag to compare

@ohah ohah released this 21 Sep 09:22
· 7 commits to main since this release

PDF → Markdown/JSON — LLM 에 먹이는 꼴로. https://www.npmjs.com/package/@ohah/pdf

npm i @ohah/pdf

새로 들어간 것

  • pdf.markdown({ pages? }) · pdf.blocks({ pages? }) — 제목 계층·문단(하이픈 잇기)·목록·코드·표·머리말/꼬리말 버림·두 단 순서. blocks 는 같은 덩이에 쪽 번호와 자리(pt)가 붙은 JSON. 워커 창구를 직접 쓰는 앱은 markdownOf/blocksOf/structTree.
  • 태그 PDF(Word·InDesign·PDF/UA)는 구조 나무를 그대로 따른다 — H1~H6·P·L/LI·Table·Code·Figure 대체 글, /Artifact 버림, /RoleMap 해석. 글자 조각(lines())에 mcid 가 붙는다.
  • 괘선 없는 표(같은 자리에서 끊기는 칸이 세 줄 넘게 이어지고 칸의 반이 숫자).
  • 글자 뽑기를 pdf.js 수준으로: 조각 폭·틈으로 띄어쓰기, 합자 풀기, ToUnicode 여러 글자 목적지, 내장 인코딩, 장치 좌표.

고친 것

  • /DescendantFonts 배열 객체(InDesign)·/W 참조(Word)를 못 따라가 모든 글자가 1000 폭이 되던 것 — 줄 뒤쪽 글자가 쪽 밖으로 밀려 사라졌다.
  • q…Q 안의 Tc 가 밖으로 새던 것.
  • 큰 암호 문서 여는 데 56초 → 90ms.
  • 구조 나무 잎을 자리 안 늘리고 담아 역할 이름이 깨지던 것.

정답 벤치 115/115(docling 95/102, pymupdf4llm 51/102). 정답 밖 27편에서 docling 과 제목 일치 278 (docling 만 141, 우리만 91), 표 73(docling 54). 자세한 것은 docs/compare.md.