diff --git a/.gitignore b/.gitignore index b69b3fd..c451f07 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,9 @@ coverage.xml .hypothesis/ .pytest_cache/ +testing/* +!testing/test.ipynb + # Translations *.mo *.pot diff --git a/clarifai_datautils/multimodal/pipeline/loaders.py b/clarifai_datautils/multimodal/pipeline/loaders.py index 5d9201f..9c19051 100644 --- a/clarifai_datautils/multimodal/pipeline/loaders.py +++ b/clarifai_datautils/multimodal/pipeline/loaders.py @@ -27,6 +27,7 @@ def __getitem__(self, index: int): meta.pop('coordinates', None) meta.pop('detection_class_prob', None) image_data = meta.pop('image_base64', None) + id = meta.get('input_id', None) if image_data is not None: # Ensure image_data is already bytes before encoding image_data = base64.b64decode(image_data) @@ -39,7 +40,7 @@ def __getitem__(self, index: int): meta['type'] = 'table' return MultiModalFeatures( - text=text, image_bytes=image_data, labels=[self.pipeline_name], metadata=meta) + text=text, image_bytes=image_data, labels=[self.pipeline_name], metadata=meta, id=id) def __len__(self): return len(self.elements) @@ -61,10 +62,13 @@ def task(self): return DATASET_UPLOAD_TASKS.TEXT_CLASSIFICATION #TODO: Better dataset name in SDK def __getitem__(self, index: int): + id = self.elements[index].to_dict().get('element_id', None) + id = id[:48] if id is not None else None return TextFeatures( text=self.elements[index].text, labels=self.pipeline_name, - metadata=self.elements[index].metadata.to_dict()) + metadata=self.elements[index].metadata.to_dict(), + id=id) def __len__(self): return len(self.elements) diff --git a/clarifai_datautils/multimodal/pipeline/summarizer.py b/clarifai_datautils/multimodal/pipeline/summarizer.py new file mode 100644 index 0000000..5ca4828 --- /dev/null +++ b/clarifai_datautils/multimodal/pipeline/summarizer.py @@ -0,0 +1,102 @@ +import base64 +import random +from typing import List + +try: + from unstructured.documents.elements import CompositeElement, ElementMetadata, Image +except ImportError: + raise ImportError( + "Could not import unstructured package. " + "Please install it with `pip install 'unstructured[pdf] @ git+https://github.com/clarifai/unstructured.git@support_clarifai_model'`." + ) + +from clarifai.client.input import Inputs +from clarifai.client.model import Model + +from .basetransform import BaseTransform + +SUMMARY_PROMPT = """You are an assistant tasked with summarizing images for retrieval. \ + These summaries will be embedded and used to retrieve the raw image. \ + Give a concise summary of the image that is well optimized for retrieval.""" + + +class ImageSummarizer(BaseTransform): + """ Summarizes image elements. """ + + def __init__(self, + model_url: str = "https://clarifai.com/qwen/qwen-VL/models/qwen-VL-Chat", + pat: str = None, + prompt: str = SUMMARY_PROMPT): + """Initializes an ImageSummarizer object. + + Args: + pat (str): Clarifai PAT. + model_url (str): Model URL to use for summarization. + prompt (str): Prompt to use for summarization. + """ + self.pat = pat + self.model_url = model_url + self.model = Model(url=model_url, pat=pat) + self.summary_prompt = prompt + + def __call__(self, elements: List) -> List: + """Applies the transformation. + + Args: + elements (List[str]): List of all elements. + + Returns: + List of transformed elements along with added summarized elements. + + """ + img_elements = [] + for _, element in enumerate(elements): + element.metadata.update(ElementMetadata.from_dict({'is_original': True})) + if isinstance(element, Image): + element.metadata.update( + ElementMetadata.from_dict({ + 'input_id': f'{random.randint(1000000, 99999999)}' + })) + img_elements.append(element) + new_elements = self._summarize_image(img_elements) + elements.extend(new_elements) + return elements + + def _summarize_image(self, image_elements: List[Image]) -> List[CompositeElement]: + """Summarizes an image element. + + Args: + image_elements (List[Image]): Image elements to summarize. + + Returns: + Summarized image elements list. + + """ + img_inputs = [] + for element in image_elements: + if not isinstance(element, Image): + continue + new_input_id = "summarize_" + element.metadata.input_id + input_proto = Inputs.get_multimodal_input( + input_id=new_input_id, + image_bytes=base64.b64decode(element.metadata.image_base64), + raw_text=self.summary_prompt) + img_inputs.append(input_proto) + resp = self.model.predict(img_inputs) + del img_inputs + + new_elements = [] + for i, output in enumerate(resp.outputs): + summary = "" + if image_elements[i].text: + summary = image_elements[i].text + summary = summary + " \n " + output.data.text.raw + eid = image_elements[i].metadata.input_id + meta_dict = {'source_input_id': eid, 'is_original': False} + comp_element = CompositeElement( + text=summary, + metadata=ElementMetadata.from_dict(meta_dict), + element_id="summarized_" + eid) + new_elements.append(comp_element) + + return new_elements diff --git a/testing/test.ipynb b/testing/test.ipynb new file mode 100644 index 0000000..40e9284 --- /dev/null +++ b/testing/test.ipynb @@ -0,0 +1,425 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "\n", + "sys.path.append(\"/Users/mansikhamkar/work/clarifai/clarifai-python-datautils\")\n", + "os.environ['CLARIFAI_PAT'] = ''" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "from clarifai_datautils.multimodal import Pipeline\n", + "from clarifai_datautils.multimodal.pipeline.cleaners import Clean_extra_whitespace\n", + "from clarifai_datautils.multimodal.pipeline.extractors import ExtractEmailAddress\n", + "from clarifai_datautils.multimodal.pipeline.PDF import PDFPartitionMultimodal\n", + "\n", + "# Define the pipeline\n", + "pipeline = Pipeline(\n", + " name='pipeline-1',\n", + " transformations=[\n", + " PDFPartitionMultimodal(chunking_strategy = \"by_title\",max_characters = 1024),\n", + " Clean_extra_whitespace()\n", + " ]\n", + ")\n", + "pipeline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Applying Transformations: 100%|██████████| 2/2 [00:25<00:00, 12.83s/it]\n" + ] + }, + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "elements = pipeline.run(files=\"./200945-1.p65.pdf\", loader=False)\n", + "elements" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "42" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(elements)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[255 216 255 ... 3 255 217]\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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mTP54vPPkag7Y77mmmv4yyMP8/jjj5Oenk7nzp2ZNm0aRoORGTNmMOOLLzCbzfz3o48oLyvj8ccfx2q11plFR8fG8Nlnn/Hdd9/x+eef88ADD3DLLbcA8M033zB79mz++9//8tJLL7Fnd7rbLVZTlh49evCvf/2L73/4gc8/+4yioiJkWSa5Ywr/93//R2JioqZNcUe9v9544w1WrlzppgGSCAkJ4dNPPyU4OBg4cSlEURRef/11Dh48yJdffsn//vc/vv32Wz799FOioqJwuVzIslzn3j+ZhuhUnEwb567laUgbcaZLgKq2yb093POyWq08/vjjeHt7884779RpI0A71z0v99/dnyen03lCWd01Sps2bSInJ4drrrnmhDq7f3bXFrkv86htcTKBQggBgpbCGQsDXbp0wd/fv+5M+xzZsWMH77//PkOHDmXMmDGkp6fz3//+l08++YRXX32ViooKiouLuffeewkPD9fOa5vQDqgZpA8fPszSpUspKipizpw53HzzzQQEBABQWlrKwYMHsVqtJzxsFouFvLw87rrrLuLj44EalXB0dDQAxcXFOJ1OHnjgASRJYt26dUyfPh1Jknj44YfrdOA5OTn885//JCEhgSlTppCXl8d//vMf3n77bT766CNuumkCTz7xJB9Pn86LU6eyYuVKlixZwi233Urbtm154YUX2LFjB4899hghISF88cUXvPvuu3Tv3p1BgwYRERFBXm4en37yCT179mT48OF4mEx4enpSVFREUFCQNkCp7RIcHExmZiYFBQU4HA5Wr17DFUOHcuDAAfbv34/Vaj1hhi9JEjabjYKCAsZdcy3du3fHZrOxePFiPvzwQzqndqFTp07k5eURHR3NDTfcoHVwRqORgIAA8vPzefrppynIy+f2228nLi6O1atX880332CxWHjp5Zex2Wzk5eVhtVq1fC0WC/n5+dhsNlwuF4WFhVr5iouLkSSJe++9F71eT05ODjNnzuStt95i+vTpNfdJUTF33303kZGRWn3aJyYiyzJFRUUUFBSwdetWCgsLCQ0JZfWqVRQWFuLp6YnT4cBut5OXl8fQoUPp16+floaPrw86nY6qqiry8vKYPn06AwcOJC4ujsrKSgoLCwG4/vrrKS0pZeuWLfz000/cfPPNpKSkEBoWRkZGBm+/9RY9e/bk6aef5tDhw7z3n/f4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72bN6tU4bHb27dvH7J9+5qrhw+nZoyeffvIJ6/74gwkTJpCfl897706j32WXYbFUs3zpMnZs3874cePZvn07f3/1b0RGROLv58ezzzxDn9596NWzF198/jmK08UDDz7IG6+9zvr167n99tvJOXqUrEOHiYw4rg1SNRPfffcdc36ezWOPPUZFRQW/zJ9Pj+49iI6MYtVvv5HaJZU28W1YtmQpG9at57FHH+Xdf/+b/fv3c//9D5C2cyc//TiL3r16ExIcjEGnx9fbh5DgYFb99ht/e+VVRo8ZQ2BgANPenYbZ08wVV1zBmlWrWfXrb0ycOJEjWdm89eZb9OzRg379+vHJJ58wXf8R/3jtNd54/Q1sVisTJ03ijz/+4PvvvqNv376EhYU1uHQjEDQVZywM2KxW3n33XTqndqFPnz7nlWlQUBDTpk1j8eLFrF61mt27dvHHH3+QvjudV155Bah5IIKCgvDz86uZzUtSTaeoKOzetYv03bu55ZZb8PLyokuXLmxYv4GDBw/SPiHhxE7RTSBQatMODAwkyG3t1dPkWXeAdNMumDw8gFp1rGYsXqMmfPnllxk8aDC//for27dv59///jcbNmzgP++/j7eXF3Hx8dxzzz288sorjBo1issvv1yzWh81ciTR0dEsXrSIDRs38ssvv7BkyRLef/99+vbtW2sVf9ziXW0XatciPTw8asJM1lrDBwYG1gzEtceqs7mVK1eyZ88ebr/9dg4fPnzStWGXS2H37t3s3r2bo0eP0rlzZ96dNo0OHTpoKnuTyURYWHiNWtblIigoCCQJh92BhITRYNDaTlEU9Ho9sixjt9s16/p6Dn3IqkdA/TVVBSrKK1i6ZCk5OTkoisJ9993HxIkTa4wSawWl4KAgzfASagwIVby8vIiOjmbL5i3YbXbCw8OJiY09oe4+Pj512tLXx/d4HXR67p48mf379vHetGl06tSpprjafw0h4ePry+uvvcby5cv57bff2LFjB2+88U82bd7M22+/rQm6J8PpdHL06FFNbV1eXo5LUdzuzRqvEaWeV2TdUoAsSYwaPZqff/6ZP37/nZCwUPLz8xk5cuTxGSmS5jXiZfbi6WeeIaFdOwwGA/957z0yMjKO11nNWanrnmkymXjowQcJDgnhp1mzSEpK4qGHHmLuvHms++MPiotL8Ki9NjfecCP33X8/+/fv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CQoKYtOmTUIQaAZMJhOXX345ixYt0jSNgosToRk4B07XITV3h6XGOT969ChHjhzRwpo254MsyzLe3t5UVlbicDhaxNKF4MyRZRm9Xl9n2clisbB+/XrNjTY2NpbMzEz+/ve/4+3tzfr165k/fz59+vQB6hqxusfw9/Ly4q677uL+++9n3LhxjB49mn/9619YrVb8/PxIT08nNTVVGBA2Ay6Xi8GDB/O///2P4uJigoODW0xAM0HjIoSBiwhFUSgpKWHbtm2kp6fj4+NDr169GDVqFAaDodENFk9XlvqfJUkiNjaWoqIiTWvi5eWluWu6d/ais2k5XHbZZZhMJs2N9pZbbsHPz4+JEydSVVVFeXk5iqJgs9m48847NZuQHj16aFqgYcOGERERAdRsuX3PPfcQHBzMtddeiyRJJCcn889//pP4+HjCwsJ47rnn2LZtGzk5OYwfP17bwlfcF02LLMtERUURFBREWloaQ4YMEdfgIkUIAxcRR48e5f3338dmszFp0iQ6dOjQZLufnQpFUaiqqmLLli3MmzePw4cPU1xcjMFgwM/Pj+TkZEaNGkWnTp20dWNBy0ENiasKaepMf/jw4ZqQV/8eU5SarXEHDRoE1Kw9q9/rdDoSEhJQFIWePXtqaVx22WVaPtHR0ScEuxGDUPPg4eFBnz59WL9+PUOGDGnu4gguEEIYuIiIiIjghRdeICMjg23btrFq1SoSEhJITU0lODi4yQdaVRWcnZ3Nm2++SU5ODiNHjmTSpEmaujErK4u1a9fy4osv0rdvXx588EECAwObtJyCU6MoCvv372fjxo2YTCb69+9PaGgoBw4cIDg4mB07dnD06FHNPqZfv374+flRUlLC77//TkFBAV27diUlJYWDBw+i0+lo164dTqeTNWvW0K1bN9LT04mJiWHjxo3aDp+yLNO9e/c6G4IJmhZVwEtNTeWTTz7BZrNp+6AILi7EE3YRocYZSElJ4ZZbbuHOO+8kKCiIb7/9lldeeYWsrKwmjzWemZnJlClTCA8PZ/r06UyePJlOnToRHh5OREQEPXv25NFHH+WDDz4gNzeXv/71r9p+6iImestg165dvP766xiNRoqKivjHP/6BtbqahQsWknU4i2++/obysjJMHh78vvZ3pn/0EdWWav7+t7+z988/CQgI4L333mP79u2sXbuWDRs21ATHcjj5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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Display the image\n", + "import numpy as np\n", + "import cv2\n", + "import matplotlib.pyplot as plt\n", + "import base64\n", + "\n", + "# Base64 image to numpy array\n", + "im_b = base64.b64decode(elements[-1].metadata.image_base64)\n", + "image_np = np.frombuffer(im_b, np.uint8)\n", + "print(image_np)\n", + "img_np = cv2.imdecode(image_np, cv2.IMREAD_COLOR)\n", + "\n", + "plt.axis('off')\n", + "plt.imshow(img_np[...,::-1])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "from clarifai_datautils.multimodal import Pipeline\n", + "from clarifai_datautils.multimodal.pipeline.cleaners import Clean_extra_whitespace\n", + "from clarifai_datautils.multimodal.pipeline.extractors import ExtractEmailAddress\n", + "from clarifai_datautils.multimodal.pipeline.PDF import PDFPartitionMultimodal\n", + "from clarifai_datautils.multimodal.pipeline.summarizer import ImageSummarizer\n", + "\n", + "# Define the pipeline\n", + "new_pipeline = Pipeline(\n", + " name='pipeline-1',\n", + " transformations=[\n", + " PDFPartitionMultimodal(chunking_strategy = \"by_title\",max_characters = 1024),\n", + " Clean_extra_whitespace(),\n", + " ImageSummarizer()\n", + " ]\n", + ")\n", + "new_pipeline" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Applying Transformations: 100%|██████████| 3/3 [02:03<00:00, 41.26s/it]\n" + ] + }, + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_elements = new_pipeline.run(files=\"./200945-1.p65.pdf\", loader=False)\n", + "new_elements" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "52" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(new_elements)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'type': 'CompositeElement',\n", + " 'element_id': 'summarized_40cc26c3-768d-44e2-baaa-4007bbc44f71',\n", + " 'text': 'GENERAL Installation pipes MUST be fitted in accordance with BS. 6891. In IE refer to I.S. 813:2002. Pipework from the meter to the boiler MUST be of an adequate size. Do not use pipes of a smaller size than the boiler gas connection. Grasslin (UK) Ltd., Tower House, Vale Rise, Tonbridge, Kent TN9 1TB. Tel: +44 (0) 1732 359 888. Fax: +44 (0) 1732 354 445 www.tfc-group.co.uk The complete installation MUST be tested for gas soundness and purged as described in the above code. \\n Sealed system requirements for fully pumped systems. Safety valve, expansion vessel, and hose union are all necessary components.',\n", + " 'metadata': {'source_element_id': '40cc26c3-768d-44e2-baaa-4007bbc44f71',\n", + " 'is_original': False}}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_elements[-1].to_dict()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Applying Transformations: 33%|███▎ | 1/3 [00:08<00:16, 8.04s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "dict_keys(['detection_class_prob', 'coordinates', 'last_modified', 'filetype', 'languages', 'page_number', 'image_base64', 'image_mime_type', 'file_directory', 'filename', 'is_original', 'input_id'])\n", + "dict_keys(['detection_class_prob', 'coordinates', 'last_modified', 'filetype', 'languages', 'page_number', 'image_base64', 'image_mime_type', 'file_directory', 'filename', 'is_original', 'input_id'])\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Applying Transformations: 100%|██████████| 3/3 [00:44<00:00, 14.69s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "########\n", + "2\n", + "\n", + "dict_keys(['detection_class_prob', 'coordinates', 'last_modified', 'filetype', 'languages', 'page_number', 'image_base64', 'image_mime_type', 'file_directory', 'filename', 'is_original', 'input_id'])\n", + "\n", + "dict_keys(['detection_class_prob', 'coordinates', 'last_modified', 'filetype', 'languages', 'page_number', 'image_base64', 'image_mime_type', 'file_directory', 'filename', 'is_original', 'input_id'])\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Uploading Dataset: 100%|██████████| 1/1 [00:29<00:00, 29.36s/it]\n" + ] + } + ], + "source": [ + "# Using SDK to upload\n", + "from clarifai.client import Dataset\n", + "dataset = Dataset(url='https://clarifai.com/mansi_k/datautils_testapp/datasets/d1', pat=os.environ['CLARIFAI_PAT'])\n", + "dataset.upload_dataset(new_pipeline.run(files=\"/Users/mansikhamkar/work/clarifai/clarifai-python-datautils/tests/pipelines/assets/Multimodal_sample_file.pdf\", loader=True))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/pipelines/test_multimodal_pipelines.py b/tests/pipelines/test_multimodal_pipelines.py index bef2534..d1e32a9 100644 --- a/tests/pipelines/test_multimodal_pipelines.py +++ b/tests/pipelines/test_multimodal_pipelines.py @@ -1,5 +1,4 @@ import os.path as osp - import pytest PDF_FILE_PATH = osp.abspath( @@ -66,3 +65,34 @@ def test_pipeline_run_loader(self,): assert elements.__class__.__name__ == 'MultiModalLoader' assert len(elements) == 14 assert elements.elements[0].metadata.to_dict()['filename'] == 'Multimodal_sample_file.pdf' + + def test_pipeline_summarize(self,): + """Tests for pipeline run with summarizer""" + import os + + from clarifai_datautils.multimodal import Pipeline + from clarifai_datautils.multimodal.pipeline.cleaners import Clean_extra_whitespace + from clarifai_datautils.multimodal.pipeline.PDF import PDFPartitionMultimodal + from clarifai_datautils.multimodal.pipeline.summarizer import ImageSummarizer + + pipeline = Pipeline( + name='pipeline-1', + transformations=[ + PDFPartitionMultimodal(chunking_strategy="by_title", max_characters=1024), + Clean_extra_whitespace(), + ImageSummarizer(pat=os.environ.get("CLARIFAI_PAT")) + ]) + elements = pipeline.run(files=PDF_FILE_PATH, loader=False) + + assert len(elements) == 17 + assert isinstance(elements, list) + assert elements[0].metadata.to_dict()['filename'] == 'Multimodal_sample_file.pdf' + assert elements[0].metadata.to_dict()['page_number'] == 1 + assert elements[6].__class__.__name__ == 'Table' + assert elements[-3].__class__.__name__ == 'Image' + assert elements[-3].metadata.is_original is True + assert elements[-3].metadata.input_id is not None + id = elements[-3].metadata.input_id + assert elements[-1].__class__.__name__ == 'CompositeElement' + assert elements[-1].metadata.is_original is False + assert elements[-1].metadata.source_input_id == id