# export TOGETHER_API_KEY=your_api_key
# pip install -U pip together
import base64
import os
from together import Together
TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
client = Together()
def encode_image(image_path):
"""Encode image to base64"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
def convert_image_to_text(image_path):
"""Convert image to text
Args:
image_path (str): Path to the image to be converted
"""
encoded_image = encode_image(image_path)
response = client.chat.completions.create(
model="meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo",
messages=[
{
"role": "system",
"content": (
"Convert the provided image into Markdown format. Ensure that all content from the page is included, "
"such as headers, footers, subtexts, images (with alt text if possible), tables, and any other elements.\n\n"
"Requirements:\n\n"
"- Output Only Markdown: Return solely the Markdown content without any additional explanations or comments.\n"
"- No Delimiters: Do not use code fences or delimiters like \\`\\`\\`markdown.\n"
"- Complete Content: Do not omit any part of the page, including headers, footers, and subtext."
)
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "convert the uploaded image to text"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{encoded_image}"
}
}
]
}
],
temperature=0.0,
stream=True
)
for token in response:
if hasattr(token, 'choices') and token.choices:
print(token.choices[0].delta.content, end='', flush=True)
return ""
IMAGAES_DIR = "images"
for image in os.listdir(IMAGAES_DIR):
images_path = os.path.join(IMAGAES_DIR, image)
convert_image_to_text(images_path)