이 파일과 같은 디렉토리에 있는 pdfread.py 도구를 사용하여 PDF를 읽으세요. 다음 두 가지 방법 중 하나로 실행할 수 있습니다.
- uv 0.11+ 사용 (권장):
pdfread.py를 직접 호출하세요. 셔뱅이uv run을 통해 실행하며, 첫 번째 호출 시 종속성을 다운로드하므로 시간이 걸릴 수 있습니다. - uv 없음:
python3 pdfread.py …는pymupdf4llm>=0.0.17이 설치된 Python 3.10+에서 작동합니다 (pip install pymupdf4llm).
search 명령은 FTS5가 포함된 SQLite가 필요합니다. uv 관리 및 거의 모든 최신 시스템 Python에 포함되어 있으며, 그렇지 않은 경우 스크립트가 명확하게 오류를 표시합니다.
전체 사용법은 pdfread.py --help를 실행하세요. 간략히 설명하면 다음과 같습니다.
pdfread.py info FILE- 페이지 수, 메타데이터, 개요/TOC. 여기서 시작하세요.pdfread.py search FILE "용어"- 키워드가 언급된 페이지를 BM25 순위로 표시하며, 히트당 스니펫을 제공합니다. 첫 번째 검색은 캐시된 인덱스를 구축하는 데 몇 초가 걸리며, 이후 검색은 즉시 수행됩니다. 용어는 AND로 결합되며,term*는 접두사 일치,--raw는 전체 FTS5 문법("정확한 구", OR, NEAR)을 사용할 수 있습니다. 텍스트 레이어만 검색되며, 스캔된 페이지는 검색되지 않습니다.pdfread.py text FILE --pages 10-25- 1부터 시작하는 페이지 범위에 대한 마크다운 텍스트입니다. 그림은[image: p12-img2 640x480px]자리 표시자로 나타납니다.pdfread.py image FILE p12-img2- 해당 그림을 PNG로 저장하고 경로를 출력합니다. 파일 읽기 도구로 확인하세요.pdfread.py images FILE --pages 12- 페이지의 그림 ID를 나열합니다.pdfread.py render FILE 7- 전체 페이지(또는--rect x0,y0,x1,y1로 자른 영역)를 PNG로 렌더링합니다. 스캔된 페이지나 텍스트 레이어가 없는 모든 항목에 대한 대체 방법입니다.
대용량 PDF의 컨텍스트 유지
정밀한 질문("계약서에서 해지 수수료는 어디에 언급되어 있나요?")의 경우 먼저 search를 실행하고 text --pages로 히트 페이지만 읽으세요. 하위 에이전트 팬아웃이 필요하지 않습니다. 인덱스 캐시는 공유되므로 하위 에이전트도 인덱스를 다시 구축하지 않고 search를 사용할 수 있습니다.
광범위한 종합 작업의 경우 전체 문서를 메인 대화에 덤프하지 마세요. 대신:
info를 실행하여 페이지 수와 개요를 얻고 문서를 적절한 범위(장별 또는 약 15~25페이지)로 분할합니다.- 범위별로 하위 에이전트를 생성하고 다음과 같은 지침을 제공합니다: "
<경로>/pdfread.py text <파일> --pages 10-25를 실행하고 <사용자의 질문>에 답변 / 최대 N단어로 요약합니다.[image: ...]자리 표시자가 관련 있어 보이면image명령으로 추출하여 확인합니다." - 메인 대화에는 요약/답변만 유지하고 이를 바탕으로 종합합니다. 요약에 답변이 있다고 표시되는 경우에만 특정 페이지를 직접 다시 타겟팅하세요.
참고 사항
- OCR은 없습니다. 텍스트 레이어가 없는 페이지는 전체 페이지
[image: ...]자리 표시자(또는 "추출 가능한 텍스트 없음" 메모)로 반환됩니다. 추출하거나render한 후 시각적으로 읽으세요. - 추출은 결정적입니다. 이미지 ID는 실행 간에 안정적이므로 하위 에이전트가 보고한 ID를 메인 대화에서 나중에 추출할 수 있습니다.