Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Python 변환에서 미디어 집합 사용하기

미디어 집합은 PDF, 이미지, 음성, 영상 등 미디어 항목을 관리합니다. Python 변환으로 텍스트 추출, OCR, 이미지 타일링과 메타데이터 처리를 수행하고 다른 미디어 집합이나 표 데이터셋에 결과를 쓸 수 있습니다.

Code Repositories의 Libraries에서 transforms-media를 설치합니다. Spark에서는 transform.spark.using() 또는 기존 transform() 선언에 MediaSetInput과 MediaSetOutput을 연결합니다. 빌드 시 선언은 각각 실제 MediaSetInputParam, MediaSetOutputParam 핸들로 해석됩니다. 여러 미디어 집합과 표 데이터셋 등 허용되는 입출력을 함께 사용할 수 있습니다.

Code Repositories의 Preview는 미디어 변환을 지원하지 않습니다. VS Code Preview Engine에서는 미디어 출력에 put_media_item()만 사용할 수 있으며, 미디어 증분 미리보기는 지원하지 않습니다. 그 밖의 미디어 출력과 증분 처리는 빌드하여 실행합니다.

항목 하나 복사하기

다음 가상 입력에는 image1.jpg가 있다고 가정합니다. 출력은 JPEG를 받을 수 있는 이미지 미디어 집합이어야 합니다.

from transforms.api import transform
from transforms.mediasets import MediaSetInput, MediaSetOutput


@transform.spark.using(
    images=MediaSetInput("/Example Project/Inputs/images"),
    copied=MediaSetOutput("/Example Project/Outputs/copied_images"),
)
def compute(images, copied):
    with images.get_media_item_by_path("image1.jpg") as image:
        copied.put_media_item(image, "copied_image1.jpg")

get_media_item_by_path(path)는 경로로, get_media_item(rid)는 항목 RID로 데이터를 엽니다. 파일 접근은 io.open()의 옵션을 지원하며 반환값은 파일 유사 스트림입니다. 임의 접근을 위한 seek는 지원하지 않습니다. 이미지 전체를 내려받지 않고 이미지 크기나 음성 길이 등의 정보를 읽으려면 get_media_item_metadata(rid)를 사용합니다.

Code Repositories에서 출력 만들기

프로젝트나 폴더의 미디어 집합 생성 대화상자를 사용할 수도 있고, 코드의 출력 선언에서 만들 수도 있습니다.

  1. MediaSetOutput에 새 출력 경로와 이름을 지정합니다.
  2. 아직 자산이 없으면 경로에 빨간 밑줄이 표시됩니다.
  3. 해당 줄의 전구 메뉴에서 Create media set을 선택합니다.

  1. Path에서 Name과 Location을 정하고 Schema, Write mode, Advanced settings 단계에서 미디어 형식과 필요한 구성을 선택합니다.

  1. Create를 선택하면 생성에 필요한 annotation 필드가 MediaSetOutput에 채워집니다. 실제 새 미디어 집합은 첫 Python 변환 빌드 뒤 생성됩니다. 생성한 뒤에는 이 annotation 필드를 편집하지 않습니다.

그림의 구성 예시는 다음과 같습니다. 이 값들을 모든 미디어 집합의 기본값으로 해석하지 않습니다.

생성 필드그림의 예시 값과 의미
media_set_schemaschema_type="imagery", primary_format="jpg": JPEG 이미지 schema
additional_allowed_input_formats빈 목록: 추가 입력 형식을 지정하지 않음
storage_configurationtype="native": 네이티브 저장 구성
retention_policy"forever": 선택한 보존 정책
write_mode"transactionless": 생성 시 선택한 트랜잭션 정책

생성 annotation의 transactionless 정책과 런타임의 set_write_mode("modify"/"replace")는 서로 다른 설정입니다. 또 생성 schema의 imagery와 fluent API의 filter_to("image")도 별도 인터페이스의 식별자입니다.

Spark와 단일 노드

Lightweight의 transform.using()도 미디어 집합을 지원합니다. 목록을 Pandas 같은 단일 노드 라이브러리로 읽고 일반 표 출력에 쓸 수 있습니다. Spark에 의존하는 put_dataset_files()는 lightweight에서 지원하지 않습니다.

미디어 입력의 증분 읽기와 미디어 출력의 증분 쓰기는 @incremental(v2_semantics=True)에서 지원합니다. 각 자산의 트랜잭션 정책과 브랜치 조건을 적용하며, 미디어 입력의 배치 제한은 Spark 전용입니다.

주제별 사용법

  • 목록, 메타데이터와 텍스트 읽기는 Spark/Pandas 목록, JSON 메타데이터, OCR 및 layout-aware V2를 설명합니다.
  • 업로드와 쓰기 모드는 스트림 업로드, 빠른 복사, PDF 첫 페이지 이미지와 참조, Catalog 파일 업로드를 설명합니다.
  • 증분 미디어 처리는 읽기 모드, 경로 덮어쓰기, transactionless 제약과 배치 제한을 설명합니다.
  • Fluent API는 schema별 35개 메서드의 인자, 반환값과 오류 정책을 연결합니다.
  • 언어 코드는 OCR 언어/문자체와 음성 전사 언어를 구분합니다.