Extracted sub-images as different file instead of single image it supposed to be #250

Open
opened 2026-02-16 00:17:16 -05:00 by yindo · 2 comments
Owner

Originally created by @tkcoding on GitHub (Sep 1, 2024).

Describe the bug
Image in PDF was extracted as different sub-image files instead of single figure it should be

Files
mattergen.pdf

Job ID
72f9de41-28a4-4957-85e6-decfea552889

Screenshots
image

Client:
Please remove untested options:

  • Python Library

Options

from llama_parse import LlamaParse
from llama_index.core import StorageContext
from llama_index.core import VectorStoreIndex
from llama_index.core.node_parser import MarkdownElementNodeParser
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.schema import ImageDocument
from typing import List
from llama_index.core.node_parser import LlamaParseJsonNodeParser
from llama_index.core.schema import BaseNode, TextNode, Document
from llama_index.core.tools import QueryEngineTool, ToolMetadata
from llama_index.core.query_engine import SubQuestionQueryEngine
import glob
ins = """
Extract images and caption as accurate as possible.
"""

class llama_document_parser(object):
    def __init__(self,parsing_ins):
        self.parser = LlamaParse(
            parsing_instruction=ins,
            verbose=True,
            ignore_errors=False,
            do_not_cache=True,
        )

    def get_image_text_nodes(self,download_path: str,json_objs: List[dict]):
        """Extract out text from images using a multimodal model."""
        image_dicts = self.parser.get_images(json_objs, download_path=download_path)
        image_documents = []
        img_text_nodes = []
        for image_dict in image_dicts:
            image_doc = ImageDocument(image_path=image_dict["path"])
            img_text_nodes.append(image_doc)
        return img_text_nodes

    def document_processing_llamaparse(self,file_name: str ,image_output_folder:str):
        """Parse document in using llamaparse and return extracted elements in json format"""
        json_objs = self.parser.get_json_result(file_name)
        json_list = json_objs[0]["pages"]
        print(json_list)
        if not os.path.exists(image_output_folder):
            os.mkdir(image_output_folder)

        image_text_nodes = self.get_image_text_nodes(image_output_folder,json_objs)
        return json_list


paper_dict = [
                {"image_folder":"docs/mattergen/",\
              "doc_folder":"docs/example_documents/",\
              "fname":"mattergen.pdf",}]

image_folder = paper_dict[0]["image_folder"]
doc_folder = paper_dict[0]["doc_folder"]
fname = paper_dict[0]["fname"]
llama_parser = llama_document_parser(parsing_ins=ins)
# llamaparse to extract documents
json_list = llama_parser.document_processing_llamaparse(file_name=f"{doc_folder}{fname}",image_output_folder=image_folder)

Additional context
Add any additional context about the problem here.

Originally created by @tkcoding on GitHub (Sep 1, 2024). **Describe the bug** Image in PDF was extracted as different sub-image files instead of single figure it should be **Files** [mattergen.pdf](https://github.com/user-attachments/files/16831945/mattergen.pdf) **Job ID** 72f9de41-28a4-4957-85e6-decfea552889 **Screenshots** ![image](https://github.com/user-attachments/assets/1be50563-c528-417f-8c3f-ca81423eb04e) **Client:** Please remove untested options: - Python Library **Options** ``` from llama_parse import LlamaParse from llama_index.core import StorageContext from llama_index.core import VectorStoreIndex from llama_index.core.node_parser import MarkdownElementNodeParser from llama_index.llms.openai import OpenAI from llama_index.embeddings.openai import OpenAIEmbedding from llama_index.core.schema import ImageDocument from typing import List from llama_index.core.node_parser import LlamaParseJsonNodeParser from llama_index.core.schema import BaseNode, TextNode, Document from llama_index.core.tools import QueryEngineTool, ToolMetadata from llama_index.core.query_engine import SubQuestionQueryEngine import glob ins = """ Extract images and caption as accurate as possible. """ class llama_document_parser(object): def __init__(self,parsing_ins): self.parser = LlamaParse( parsing_instruction=ins, verbose=True, ignore_errors=False, do_not_cache=True, ) def get_image_text_nodes(self,download_path: str,json_objs: List[dict]): """Extract out text from images using a multimodal model.""" image_dicts = self.parser.get_images(json_objs, download_path=download_path) image_documents = [] img_text_nodes = [] for image_dict in image_dicts: image_doc = ImageDocument(image_path=image_dict["path"]) img_text_nodes.append(image_doc) return img_text_nodes def document_processing_llamaparse(self,file_name: str ,image_output_folder:str): """Parse document in using llamaparse and return extracted elements in json format""" json_objs = self.parser.get_json_result(file_name) json_list = json_objs[0]["pages"] print(json_list) if not os.path.exists(image_output_folder): os.mkdir(image_output_folder) image_text_nodes = self.get_image_text_nodes(image_output_folder,json_objs) return json_list paper_dict = [ {"image_folder":"docs/mattergen/",\ "doc_folder":"docs/example_documents/",\ "fname":"mattergen.pdf",}] image_folder = paper_dict[0]["image_folder"] doc_folder = paper_dict[0]["doc_folder"] fname = paper_dict[0]["fname"] llama_parser = llama_document_parser(parsing_ins=ins) # llamaparse to extract documents json_list = llama_parser.document_processing_llamaparse(file_name=f"{doc_folder}{fname}",image_output_folder=image_folder) ``` **Additional context** Add any additional context about the problem here.
yindo added the bug label 2026-02-16 00:17:16 -05:00
Author
Owner

@tkcoding commented on GitHub (Sep 10, 2024):

Hi @hexapode , is this bug replicable and is there any plan to improve this? Since Image extraction is one of the crucial feature LlamaParse provides that I consider as a deal breaker.

@tkcoding commented on GitHub (Sep 10, 2024): Hi @hexapode , is this bug replicable and is there any plan to improve this? Since Image extraction is one of the crucial feature LlamaParse provides that I consider as a deal breaker.
Author
Owner

@TonySimonovsky commented on GitHub (Nov 1, 2024):

Would also like to know if there some workaround

@TonySimonovsky commented on GitHub (Nov 1, 2024): Would also like to know if there some workaround
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: run-llama/llama_cloud_services#250