From 65d7e65a40423acc22388ce2f2bae51b63db5502 Mon Sep 17 00:00:00 2001 From: quentin Date: Mon, 7 Jul 2025 19:29:20 +0200 Subject: [PATCH] added possibility to read img recipe --- ressources/imgs/recette_test.png | Bin 0 -> 84530 bytes src/model.py | 81 ++++++++++++++++++++++++++++--- src/utils.py | 17 ++++++- 3 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 ressources/imgs/recette_test.png diff --git a/ressources/imgs/recette_test.png b/ressources/imgs/recette_test.png new file mode 100644 index 0000000000000000000000000000000000000000..2803b680e28e56fc46714088107ff10588218459 GIT binary patch literal 84530 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 z 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 Dtx*xFLoyP`Q-4&AyLdwk**80j>7O)-gjt}{Zv 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

W*i~eCsbcB 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 dict[str, Any]: +def text_recipe_analysis(recipe: str, **kwargs) -> dict[str, Any]: """ - Analyze a recipe returning ingredients and preparation steps + Analyze a recipe in text returning ingredients and preparation steps Call a MistralAI model with parameters in kwargs - :param recipe: + :param recipe: recipe in text format :param kwargs: - :return: + :return: dict containing ingredients and preparation method """ task = f"""Your task is to analyze a recipe. For this analysis you have to extract ingredients and their quantitites. @@ -45,4 +45,73 @@ RECIPE: model=kwargs["model"], messages=[create_message("user", task)], response_format={ "type": "json_object" } - ).choices[0].message.content) \ No newline at end of file + ).choices[0].message.content) + +def img_recipe_analysis(recipe: str, **kwargs) -> dict[str, Any]: + """ + Analyze a recipe in image returning ingredients and preparation steps + Call a MistralAI model with parameters in kwargs + :param recipe: path to image recipe file + :param kwargs: + :return: dict containing ingredients and preparation method + """ + + img = encode_image(recipe) + + client = Mistral(api_key=kwargs["api_key"]) + ocr_answer = client.ocr.process( + model="mistral-ocr-2505", + document={ + "type": "image_url", + "image_url":f"data:image/jpeg;base64,{img}" + }, + include_image_base64=True + ).pages + + text = "".join([page.markdown for page in ocr_answer]) + + with open("test.md", 'w') as f: + f.write(text) + + return text_recipe_analysis(text, **kwargs) + +# def replace_ingredients(ingredients: list[str], **kwargs) -> dict[str, Any]: +# """ +# Ask a model to find replacements for the ingredients indicated +# :param ingredients: List of ingredients to replace +# :param kwargs: +# :return: a dict with a list of replacements and indications about these replacements +# """ +# task = """Your task is to find replacements for the ingredients that will be provided. +# You have to search the web to do so. +# For each ingredient, find 3 replacements. +# For each replacement give the name of the ingredient found and the quantity used to replace 1g of the ingredient. +# You also have to list the pros and the cons of using this replacement. +# You will return a list with each ingredient and its replacement. +# +# Your answer must be formatted so that it can be stored in a json format. +# The json must be containing the fields: +# - 'ingredient': that is the ingredient to be replaced. +# +# under 'ingredient', you will have the following field: +# - 'replacements': that is the list of 'replacement' ingredients. +# +# Each 'replacement' will have the fields: +# - 'name': that is the name of the particular replacement; +# - 'quantity': that is the quantity of the particular replacement; +# - 'pros': A list of different benefits for this particular replacement; +# - 'cons': A list of different drawbacks for this particular replacement; +# +# Here are the ingredients you hae to replace: +# """ +# +# for ingredient in ingredients: +# task += f"- {ingredient};\n" +# +# client = Mistral(api_key=kwargs["api_key"]) +# return json.loads(client.chat.complete( +# model=kwargs["model"], +# messages=[create_message("user", task)], +# tools=[{"type": "web_search"}], +# response_format={"type": "json_object"} +# ).choices[0].message.content) \ No newline at end of file diff --git a/src/utils.py b/src/utils.py index aad5910..9f94f9c 100644 --- a/src/utils.py +++ b/src/utils.py @@ -3,6 +3,8 @@ :mail: pro@quentin-leblanc.ch :brief: Utility functions """ +import base64 + def create_message(role: str, content: str) -> dict[str, str]: """ @@ -11,4 +13,17 @@ def create_message(role: str, content: str) -> dict[str, str]: :param content: :return: """ - return {"role": role, "content": content} \ No newline at end of file + return {"role": role, "content": content} + +# from https://docs.mistral.ai/capabilities/vision/ +def encode_image(image_path): + """Encode the image to base64.""" + try: + with open(image_path, "rb") as image_file: + return base64.b64encode(image_file.read()).decode('utf-8') + except FileNotFoundError: + print(f"Error: The file {image_path} was not found.") + return None + except Exception as e: # Added general exception handling + print(f"Error: {e}") + return None \ No newline at end of file