import streamlit as st import google.generativeai as genai from PIL import Image import markdown from docx import Document from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.shared import Pt from io import BytesIO import os os.environ["GOOGLE_API_KEY"] = os.getenv("GOOGLE_API_KEY") genai.configure(api_key=os.environ["GOOGLE_API_KEY"]) model = genai.GenerativeModel('gemini-1.5-flash-latest') def response(image): prompt = """You are an intelligent document creator. Could you please extract the words from the given screenshot and provide me document text that matches exact screenshot font and look important note: if the screenshot not contain any text means you must say 'please upload a valid screenshot.'""" img = Image.open(image) response = model.generate_content([prompt, img]) return response.text def markdown_to_word(markdown_text): # Create a new Word document doc = Document() for line in markdown_text.split('\n'): if line.startswith('# '): heading = line[2:] p = doc.add_heading(heading, level=1) elif line.startswith('## '): heading = line[3:] p = doc.add_heading(heading, level=2) elif line.startswith('### '): heading = line[4:] p = doc.add_heading(heading, level=3) elif line.startswith('- '): item = line[2:] p = doc.add_paragraph(item, style='ListBullet') else: p = doc.add_paragraph() words = line.split(' ') for word in words: word = word.strip() if word.startswith('**') and word.endswith('**'): run = p.add_run(word[2:-2]) run.bold = True elif word.startswith('*') and word.endswith('*'): run = p.add_run(word[1:-1]) run.italic = True else: p.add_run(word) p.add_run(' ') # Save the document to a BytesIO object buffer = BytesIO() doc.save(buffer) buffer.seek(0) return buffer st.title("Image🖼️ - DOCUMENT📃") st.markdown(""" """, unsafe_allow_html=True) with st.sidebar: st.header("ABOUT:") st.caption("""
Screenshot to Document file Creator is an AI powered app that allows users to effortlessly convert their screenshots into Word documents. Simply upload a screenshot, and the app will generate a Word document based on the image provided, ensuring a seamless and efficient conversion process. Ideal for anyone looking to quickly turn visual content into editable text documents.
""", unsafe_allow_html=True) for _ in range(17): st.write("") st.subheader("Build By:") st.write("[Suriya S❤️](https://github.com/theSuriya)") st.write("contact: [Email](mailto:thesuriya3@gamil.com)") fake_image_text = 'please upload a valid screenshot.' st.text("Upload your screenshot to convert it into a Word document") uploaded_file = st.file_uploader("", type=["png", "jpg", "jpeg"]) if uploaded_file: st.image(uploaded_file) button = st.button("Generate Document") if button: with st.spinner("Generating a Document..."): text = response(uploaded_file) st.write(text) if text.lower().strip() != fake_image_text: doc_buffer = markdown_to_word(text) st.download_button( label="Download", data=doc_buffer, file_name="output.docx", mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document" )