PDF 주석 달기
Potato의 pdf 디스플레이 타입으로 PDF에 주석을 답니다. 스팬 하이라이트, 페이지 위 바운딩 박스, 페이지 간 연결, 스캔 파일용 OCR을 다룹니다.
pdf 디스플레이는 PDF.js로 브라우저에서 PDF를 렌더링하고, 주석 표면을 미리 추출한 텍스트가 아니라 렌더링된 페이지 위에 올립니다. 작업자는 단, 표, 그림, 페이지 나눔이 그대로 살아 있는 실제 문서를 보고 그 자리에서 레이블을 답니다. 이 디스플레이가 요구하는 키는 PDF 경로나 URL을 담은 필드 하나뿐이며, 나머지는 모두 디스플레이 옵션입니다.
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
view_mode: scroll
max_height: 760
zoom: page-widthview_mode는 scroll, paginated, side-by-side를 받습니다. 연속 스크롤은 모든 페이지를 한 컨테이너에 쌓으므로, 주석이 페이지 나눔을 가로질러야 할 때 중요합니다. 페이지 단위 보기는 탐색 컨트롤과 함께 한 번에 한 페이지씩 보여 주며, 작업자가 페이지별로 작업하는 긴 문서에 맞습니다.
세 가지 주석 모드
annotation_mode는 작업자가 무엇을 그릴 수 있는지 결정하며, 겉모습이 아니라 작업 자체를 바꾸는 옵션입니다. 기본값은 span입니다.
| 모드 | 작업자가 하는 일 | 앵커 대상 |
|---|---|---|
span | 텍스트를 선택하고 레이블을 적용 | PDF.js 텍스트 레이어 |
bounding_box | 페이지 어디에나 상자를 그림 | 페이지 좌표 |
link | 앵커를 표시한 뒤 서로 연결 | 텍스트 스팬과 페이지 영역 |
스팬 모드는 PDF에 텍스트 레이어가 있어야 동작합니다. 워드 프로세서나 조판 시스템에서 생성한 PDF에는 있고, 스캔본에는 없습니다. 바운딩 박스 모드는 텍스트 레이어에 의존하지 않으므로, 스캔한 페이지도 텍스트 추출 없이 영역 단위로 레이블을 달 수 있습니다.
pdf 디스플레이는 다른 디스플레이가 쓰는 .text-content 래퍼 대신 PDF.js 텍스트 레이어를 통해 스팬을 앵커하므로 span_target 플래그를 받지 않습니다. 스팬 주석 자체는 PDF 자체의 텍스트 레이어를 통해 그대로 동작합니다.
페이지 간 연결
링크 모드는 2쪽의 주장이 9쪽의 그림에 근거하는 경우처럼 여러 페이지에 걸친 관계를 위한 것입니다. 작업자는 먼저 앵커를 표시한 다음 그 사이에 유형이 지정된 링크를 그리며, Potato는 앵커와 링크를 서로 다른 스키마 이름으로 기록합니다.
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
annotation_mode: link
view_mode: scroll
enable_text_anchors: true
enable_region_anchors: true
anchor_schema: pdf_anchors
link_schema: pdf_links
anchor_labels:
- name: claim
color: "#dc2626"
- name: figure
color: "#2563eb"
link_types:
- name: refers_to
directed: true
color: "#dc2626"
allowed_source_labels: [claim]
allowed_target_labels: [figure]allowed_source_labels와 allowed_target_labels는 한 링크 유형이 어떤 앵커를 이을 수 있는지 제한합니다. 이렇게 하면 지침이 작업자가 외워야 할 것이 아니라 인터페이스가 강제하는 것이 됩니다. 위와 같이 설정한 refers_to 링크는 claim에서만 시작할 수 있고 figure에서만 끝날 수 있으므로, 그림에서 주장 쪽으로 그린 링크는 거부됩니다. same_as 같은 대칭 관계에는 directed: false를 설정하십시오.
앵커는 두 종류이며 각각 따로 끌 수 있습니다. enable_text_anchors는 텍스트 스팬 하이라이트를, enable_region_anchors는 영역 상자 그리기를 허용하며, 후자는 그림이나 표에 필요합니다. 완전한 실습 예제가 업스트림의 examples/advanced/pdf-link-scroll/에 함께 제공됩니다.
스캔 문서와 OCR
ocr는 기본적으로 꺼져 있으며, Potato는 이 옵션을 링크 모드에서만 읽습니다. 설정하면 단어를 서버 쪽에서 추출해 클라이언트 텍스트 레이어를 만들기 때문에, 내장 텍스트가 없는 스캔본도 텍스트 앵커를 가질 수 있습니다. 이 옵션은 false, true, auto를 받으며, Potato는 그 밖의 값을 거부합니다.
instance_display:
fields:
- key: pdf
type: pdf
display_options:
annotation_mode: link
ocr: auto
ocr_dpi: 200
ocr_lang: eng세 설정은 처리가 언제 실행되는지에서 갈립니다. false는 내장 텍스트 레이어만 사용하고, true는 항상 OCR을 실행하며, auto는 내장 텍스트 레이어가 비어서 돌아올 때에만 OCR로 넘어갑니다. OCR은 느리고 Tesseract 설치가 필요하므로 혼합 코퍼스에서는 auto를 택하십시오. ocr_dpi는 OCR이 읽기 전에 각 페이지를 래스터화하는 해상도를 제어하며, 값을 올리면 모든 페이지에서 시간이 더 듭니다. ocr_lang은 Tesseract 언어 코드를 받고 기본값은 eng입니다.
디스플레이 옵션
| 옵션 | 기본값 | 효과 |
|---|---|---|
view_mode | scroll | scroll, paginated, side-by-side |
max_height | 700 | 컨테이너 높이(픽셀) |
max_width | 없음 | 컨테이너 너비 |
text_layer | true | 텍스트 선택을 활성화 |
show_page_controls | true | 페이지 탐색 컨트롤 |
initial_page | 1 | 처음 표시되는 페이지 |
zoom | auto | auto, page-fit, page-width 또는 백분율 |
annotation_mode | span | span, bounding_box, link |
bbox_min_size | 10 | 허용되는 가장 작은 상자(픽셀) |
bbox_colors | 없음 | 레이블별 상자 색 |
show_bbox_labels | true | 상자 위에 레이블을 그림 |
thumbnail_sidebar | true | 페이지 단위 보기의 페이지 썸네일 |
enable_text_anchors | true | 텍스트 스팬을 링크 앵커로 사용 가능 |
enable_region_anchors | true | 영역 상자를 링크 앵커로 사용 가능 |
anchor_schema | pdf_anchors | 앵커에 기록되는 스키마 |
link_schema | pdf_links | 링크에 기록되는 스키마 |
ocr | false | false, true, auto |
ocr_dpi | 200 | OCR 렌더링 해상도 |
ocr_lang | eng | Tesseract 언어 코드 |
Word 및 Markdown 파일
DOCX나 Markdown 파일은 대신 document 디스플레이를 사용합니다. 이 디스플레이는 문서의 제목과 문단 구조를 유지하고 span_target도 받습니다. annotation_mode는 span 또는 bounding_box로 읽으며, show_outline은 본문의 제목에서 목차를 만듭니다. Potato는 렌더링된 마크업을 작업자에게 전달하기 전에 허용 목록을 통과시키므로, 실행 가능한 태그를 담은 코퍼스 필드는 실행되지 않고 제거됩니다.
instance_display:
fields:
- key: report
type: document
label: "Report"
display_options:
show_outline: true
max_height: 600더 읽어보기
- 인스턴스 디스플레이는 모든 디스플레이 타입과 그중 어느 것이 스팬 타깃을 받는지 정리합니다.
- 스팬 주석은 스팬 스키마가 받는 레이블 옵션을 다룹니다.
- 문서에 주석 다는 법은 문서 검토 작업을 처음부터 끝까지 따라갑니다.
- 구현 세부 사항은 소스 문서를 참고하십시오.