Source code for contextgem.public.images

#
# ContextGem
#
# Copyright 2025 Shcherbak AI AS. All rights reserved. Developed by Sergii Shcherbak.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

"""
Module for handling document images.

This module provides the Image class, which represents visual content that can be attached to
or fully represent a document. Images are stored in base64-encoded format with specified MIME types
to ensure proper handling.
"""

from __future__ import annotations

from contextgem.internal.base.images import _Image
from contextgem.internal.decorators import _expose_in_registry


[docs] @_expose_in_registry(additional_key=_Image) class Image(_Image): """ Represents an image with specified MIME type and base64-encoded data. An image is typically attached to a document, or fully represents a document. Util function ``create_image()`` from ``contextgem.public.utils`` can be used to create an Image instance from various sources: file paths, PIL Image objects, file-like objects, or raw bytes data. :ivar mime_type: The MIME type of the image. This must be one of the predefined valid types ("image/jpg", "image/jpeg", "image/png", "image/webp"). :vartype mime_type: Literal["image/jpg", "image/jpeg", "image/png", "image/webp"] :ivar base64_data: The base64-encoded data of the image. The util function ``image_to_base64()`` from ``contextgem.public.utils`` can be used to encode images to base64. :vartype base64_data: str Note: - Attached to documents: An image must be attached to a document. A document can have multiple images. - Extraction types: Only document-level concept extraction is supported for images. Use LLM with role ``"extractor_vision"``, ``"reasoner_vision"``, ``"extractor_multimodal"``, or ``"reasoner_multimodal"`` to extract concepts from images. Example: .. literalinclude:: ../../../dev/usage_examples/docstrings/images/def_image.py :language: python :caption: Image definition """ pass