Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

문서와 OCR 변환 API

문서에서 텍스트를 얻는 연산과 새 문서/이미지를 생성하는 연산은 반환형이 다릅니다. 아래 함수의 입력과 출력은 실제 변환 핸들이며 DataFrame 예제는 Spark를 사용합니다.

OCR와 원시 텍스트 선택

ocr()는 PDF 또는 이미지에서 전통 OCR로 텍스트를 읽습니다. 스캔 문서와 이미지에 적합하며 시각 언어 모델을 이용한 추출과는 별도 경로입니다. extract_raw_text()는 전자적으로 생성한 PDF의 포함된 텍스트를 읽는 데 적합합니다.

두 메서드는 다음 인자를 공유합니다.

인자자료형기본값과 조건
media_item_ridOptional[str]None이면 집합 전체, 지정하면 한 항목
start_pageOptional[int]0. 첫 페이지 포함, PDF에 적용
end_pageOptional[int]None이면 문서 끝까지. 숫자를 지정하면 해당 경계 제외
return_structurestritem_per_row 기본, 또는 page_per_row. 집합 전체 PDF 처리에 적용
suppress_errorsboolTrue. 집합 전체의 오류를 결과에 포함. False이면 빌드 실패

OCR에는 추가로 languages: list[str]와 scripts: Optional[list[str]]가 있습니다. 언어 기본값은 영어이고 문자체 기본값은 None입니다. 언어와 문자체 코드를 사용합니다.

반환 형태

작업과 범위반환
이미지 한 개의 OCRstr
PDF 한 개의 OCR 또는 원시 텍스트 추출list[str]
PDF 집합, item_per_rowmedia_item_rid, path, media_reference, extracted_text 열의 DataFrame. extracted_text는 list[str]
PDF 집합, page_per_row위 식별자 열과 page_number, 문자열 extracted_text
이미지 집합의 OCR식별자 열과 page_number, 문자열 extracted_text

suppress_errors는 집합 전체에만 적용합니다. 기본 설정으로 오류를 포함한 결과를 받았을 때는 추출된 문자열이 모두 성공한 본문이라고 가정하지 않습니다.

def ocr_collection(media, dataset_output):
    dataset_output.write_dataframe(media.transform().ocr())


def extract_electronic_pdf_text(pdfs, dataset_output):
    dataset_output.write_dataframe(pdfs.transform().extract_raw_text())


def ocr_pdf_pages(pdfs, dataset_output):
    result = pdfs.transform().ocr(
        start_page=0, end_page=5, return_structure="page_per_row",
        suppress_errors=False,
    )
    dataset_output.write_dataframe(result)

마지막 예제는 0~4번 페이지를 처리하며 검사 실패가 아닌 추출 오류도 빌드 실패로 전파하도록 명시합니다. 레이아웃 블록과 경계 상자가 필요하면 layout-aware V2를 사용합니다.

convert_document_to_images

문서 페이지를 지정한 크기의 이미지로 바꿉니다.

인자자료형기본값
media_item_ridOptional[str]None, 집합 전체
start_pageOptional[int]0, 포함
end_pageOptional[int]None, 문서 끝까지. 지정 경계는 제외
widthOptional[int]1024
heightOptional[int]1024
output_formatstrPNG, JPEG 등 선택 가능

MediaSetInputTransform을 반환하며 미디어 출력에 씁니다.

def document_images(pdfs, image_output):
    image_output.write(pdfs.transform().convert_document_to_images())


def selected_document_images(pdfs, image_output, media_item_rid):
    operation = pdfs.transform().convert_document_to_images(
        media_item_rid=media_item_rid,
        start_page=0, end_page=5, width=600, height=900,
        output_format="jpg",
    )
    return image_output.write(operation)

개별 항목 RID는 실제 입력 항목으로 지정합니다. 여러 페이지에서 생성되는 결과의 경로와 write 반환값은 출력 계약을 따릅니다.

slice_document

인자자료형기본값과 조건
start_pageint필수, 0부터 시작하고 포함
end_pageint필수, 제외 경계
media_item_ridOptional[str]None, 집합 전체
strictly_enforce_end_pageboolTrue. end_page가 실제 페이지 수를 넘으면 오류. False이면 문서 마지막 페이지까지만 사용
def first_five_pages(documents, output):
    output.write(documents.transform().slice_document(start_page=0, end_page=5))

기본 strict 설정의 예제는 최소 다섯 페이지인 문서에 사용합니다. 반환은 다음 변환을 연결할 수 있는 MediaSetInputTransform입니다.

양식 필드, 목차와 페이지 크기

세 메서드는 media_item_rid: Optional[str]=None과 suppress_errors: bool=True를 받습니다. 오류 억제는 집합 전체에만 적용하며 False이면 오류를 전파하여 빌드를 실패시킵니다.

메서드단일 항목의 반환집합 DataFrame의 추가 열
extract_form_fields()양식 필드를 담은 JSON 문자열form_fields: str
extract_table_of_contents()문서 목차를 담은 JSON 문자열table_of_contents: str
get_pdf_page_dimensions()페이지별 width와 height 사전 목록을 담은 JSON 문자열page_dimensions: str

집합 결과에는 공통으로 media_item_rid, path, media_reference도 있습니다. JSON 문자열을 구조화된 값으로 사용하려면 JSON 파서로 해석합니다.

def form_fields(documents, dataset_output):
    dataset_output.write_dataframe(documents.transform().extract_form_fields())


def table_of_contents(documents, dataset_output):
    dataset_output.write_dataframe(documents.transform().extract_table_of_contents())


def pdf_page_dimensions(pdfs, dataset_output):
    dataset_output.write_dataframe(pdfs.transform().get_pdf_page_dimensions())