from tkinter import * import tkinter as tk from tkinter import ttk from tkinter.filedialog import askopenfile, asksaveasfile from PIL import Image, ImageTk import pytesseract as tes #from fpdf import FPDF import os import pdfkit #PDF path_wkhtmltopdf = r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe' config = pdfkit.configuration(wkhtmltopdf=path_wkhtmltopdf) #TESSERACT tes.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' #TKINTER root = Tk() #TKINTER SETTINGS content = ttk.Frame(root, padding=(3,3,12,12)) frame = ttk.Frame(content, borderwidth=5, relief="ridge", width=200, height=200) clear = ttk.Button(content, text="Clear textbox",command=lambda:clearTextInput()) ok = ttk.Button(content, text="Okay") save = ttk.Button(content, text="Save",command=lambda:save_file()) convert = ttk.Button(content,text="Convert to PDF",command=lambda:convert_to_pdf()) #btn for image browse_text = StringVar() browse_btn = ttk.Button(content,textvariable=browse_text,command=lambda:open_file()) browse_text.set("Browse") text_box = Text(content,width=50,height=12) def clearTextInput(): text_box.delete("1.0","end") def open_file(): browse_text.set("loading...") file = askopenfile(parent=root,mode='rb',title="Choose a file",filetype=[("Image file","*.png *.jpg *.jpeg")]) if file: # create a canvas to show image on canvas_for_image = Canvas(frame, bg='green', height=200, width=200, borderwidth=0, highlightthickness=0) canvas_for_image.grid(row=0, column=0, sticky='nesw', padx=0, pady=0) # create image from image location resize it to 200X200 and put in on canvas image = Image.open(file) canvas_for_image.image = ImageTk.PhotoImage(image.resize((200, 200), Image.ANTIALIAS)) canvas_for_image.create_image(0, 0, image=canvas_for_image.image, anchor='nw') #text box img_content = tes.image_to_string(image) text_box.insert(1.0, img_content) browse_text.set("Browse") print(img_content) def save_file(): filename = asksaveasfile(mode='w',defaultextension="*.txt") if filename is None: return text2save = str(text_box.get(1.0,END)) filename.write(text2save) filename.close() def convert_to_pdf(): f = askopenfile(mode='r',title="Choose a file",filetype=[("Text file (*.txt)","*.txt")]) pdfkit.from_file(f,'out.pdf') os.startfile('out.pdf') # CONTENT REPOSITION content.grid(column=0, row=0, sticky=(N, S, E, W)) frame.grid(column=0, row=0, columnspan=3, rowspan=2, sticky=(N, S, E, W)) browse_btn.grid(column=1, row=3) clear.grid(column=2,row=3) save.grid(column=3, row=3) convert.grid(column=4,row=3) text_box.grid(column=3, row=0, columnspan=2, sticky=(N, W), padx=5) root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) content.columnconfigure(0, weight=3) content.columnconfigure(1, weight=3) content.columnconfigure(2, weight=3) content.columnconfigure(3, weight=1) content.columnconfigure(4, weight=1) content.rowconfigure(1, weight=1) root.mainloop()