www.acmv.org/python/tkinter/pdf_extract/logo.png
www.acmv.org/python/tkinter/pdf_extract/test.pdf
python code ဖိုင် နှင့် logo.jpg ဖိုင်၊ ဖတ်ယူမည့် PDF ဖိုင်တို့သည် directory တစ်ခု အောက်တွင် အတူတူရှိနေပြီး code များ တစ်ဆင့်ခြင်း စတင် စမ်းနိုင်ပါပြီ။
(၁) PyPDF2 ကို install မလုပ်ရသေးပါက
pip install PyPDF2
သို့မဟုတ် Jupyter notebook အတွက်
conda install -c conda-forge pypdf2
ဖြင့် install လုပ်နိုင်ပါသည်။
(၂)pillow module ကို install မလုပ်ရသေးပါက
pip install pillow
သို့မဟုတ် Jupyter notebook အတွက်
conda install -c anaconda pillow
ဖြင့် install လုပ်နိုင်ပါသည်။
install လုပ်ပြီးပါက အောက်မှ code များဖြင့် import လုပ်ပါမည်။
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
# ရှိရမည့် module များ ရှိ မရှိ စစ်ဆေးရန်
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
print("Is this working?")
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
root = tk.Tk()
root.mainloop()
# အောက်မှ code သည် jupyter ipython notebook တွင် ပုံများကို ဖော်ပြရန်အတွက် ဖြစ်သည်။
from IPython.display import Image
Image(filename="root.jpg")
canvas = tk.Canvas(root, width=600, height=300)
canvas.grid(columnspan=3, rowspan=3)
ဖြင့် width=600 နှင့် height=300 အရွယ်အစားရှိသော canvas တစ်ခု တည်ဆောက်သည်။ canvas ကို ကော်လံ (၃)ခု row (၃) ခု ဖြင့် အပိုင်း ၆ ပိုင်း ပိုင်းထားသည်။
canvas တည်ဆောက်ခြင်းကို လေ့လာလိုပါက အောက် link တွင် ဖတ်ရှုနိုင်သည်။
http://www.acmv.org/python/tkinter/Tk_canvas.html
အောက်မှ code များသည် logo image ထည့်ခြင်း အတွက်ဖြစ်သည်။
logo = Image.open('logo.png')
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
logo_label.image = logo
logo_label.grid(column=1, row=0)
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
root = tk.Tk()
canvas = tk.Canvas(root, width=600, height=300)
canvas.grid(columnspan=3, rowspan=3)
# logo image ထည့်ခြင်း
logo = Image.open('logo.png')
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
logo_label.image = logo
logo_label.grid(column=1, row=0)
root.mainloop()
from IPython.display import Image
Image(filename="logo_image_on_root.jpg")
အောက်မှ code များသည် instructions စာတန်း(label)ထည့်ရန်အတွက် ဖြစ်သည်။
instructions = tk.Label(root, text="Select a PDF file on your computer to extract all its text", font="Raleway")
instructions.grid(columnspan=3, column=0, row=1)
အောက်မှ code များသည် browse button ထည့်ရန်အတွက် ဖြစ်သည်။
browse_text အတွက် tk.StringVar() ဖြင့် string variable ကြေငြာသည်။
browse_button ကို click လျှင် ဖိုင်ဖွင့်ရန်အတွက် dialog box ပေါ်လာလိမ့်မည်။
browse_btn.grid ဖြင့် column=1, row=2 နေရာတွင် browse_button ကို နေရာချသည်။
font="Raleway", bg="#20bebe", fg="white", height=2, width=15 တို့သည် browse_button ၏ option များ ဖြစ်သည်။
browse_text = tk.StringVar()
browse_btn = tk.Button(root, textvariable=browse_text, command=lambda:open_file(), font="Raleway", bg="#20bebe", fg="white", height=2, width=15)
browse_text.set("Browse")
browse_btn.grid(column=1, row=2)
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
root = tk.Tk()
canvas = tk.Canvas(root, width=600, height=300)
canvas.grid(columnspan=3, rowspan=3)
# logo image ထည့်ခြင်း
logo = Image.open('logo.png')
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
logo_label.image = logo
logo_label.grid(column=1, row=0)
#instructions စာတန်းထည့်ခြင်း
instructions = tk.Label(root, text="Select a PDF file on your computer to extract all its text", font="Raleway")
instructions.grid(columnspan=3, column=0, row=1)
# browse button ထည့်ခြင်း
browse_text = tk.StringVar()
browse_btn = tk.Button(root, textvariable=browse_text, command=lambda:open_file(), font="Raleway", bg="#20bebe", fg="white", height=2, width=15)
browse_text.set("Browse")
browse_btn.grid(column=1, row=2)
canvas = tk.Canvas(root, width=600, height=250)
canvas.grid(columnspan=3)
root.mainloop()
from IPython.display import Image
Image(filename="instruction_and_browse_button.jpg")
open_file() function ဖြင့်
(၁) browse_button ကို click လျှင် ဖိုင်ဖွင့်ရန်အတွက် dialog box ပေါ်လာလိမ့်မည် (၂) မိမိဖတ်လိုသည့် pdf ဖိုင်ကို ရွေးချယ်လိုက်ပါ။ (၃) ရွေးပေးသည့် pdf ဖိုင်ကို ဖတ်သည်။ (၄) ထို pdf ဖိုင်ထဲမှ text များကို page_content variable ဖြင့် မှတ်ထားသည်။
def open_file():
browse_text.set("loading...")
file = askopenfile(parent=root, mode='rb', title="Choose a file", filetype=[("Pdf file", "*.pdf")])
if file:
read_pdf = PyPDF2.PdfFileReader(file)
page = read_pdf.getPage(0)
page_content = page.extractText()
page_content မှ text များကို root ပေါ်တွင် ဖော်ပြရန်အတွက် text_box တစ်ခုတည်ဆောက်သည်။
text_box.insert() ဖြင့် text_box ထဲသို့ text များကို ဖော်ပြရန်အတွက် ထည့်သည်။
#text box
text_box = tk.Text(root, height=10, width=50, padx=15, pady=15)
text_box.insert(1.0, page_content)
text_box.tag_configure("center", justify="center")
text_box.tag_add("center", 1.0, "end")
text_box.grid(column=1, row=3)
အောက်မှာ code များသည် အထက်တွင် ရှင်းပြခဲ့သည့် code များ အစမှ အဆုံးအထိ ဖြစ်သည်။
import tkinter as tk
import PyPDF2
from PIL import Image, ImageTk
from tkinter.filedialog import askopenfile
root = tk.Tk()
canvas = tk.Canvas(root, width=600, height=300)
canvas.grid(columnspan=3, rowspan=3)
# logo image ထည့်ခြင်း
logo = Image.open('logo.png')
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
logo_label.image = logo
logo_label.grid(column=1, row=0)
#instructions စာတန်းထည့်ခြင်း
instructions = tk.Label(root, text="Select a PDF file on your computer to extract all its text", font="Raleway")
instructions.grid(columnspan=3, column=0, row=1)
def open_file():
browse_text.set("loading...")
file = askopenfile(parent=root, mode='rb', title="Choose a file", filetype=[("Pdf file", "*.pdf")])
if file:
read_pdf = PyPDF2.PdfFileReader(file)
page = read_pdf.getPage(0)
page_content = page.extractText()
#text box ထည့်ခြင်း
text_box = tk.Text(root, height=10, width=50, padx=15, pady=15)
text_box.insert(1.0, page_content)
text_box.tag_configure("center", justify="center")
text_box.tag_add("center", 1.0, "end")
text_box.grid(column=1, row=3)
browse_text.set("Browse")
# browse button ထည့်ခြင်း
browse_text = tk.StringVar()
browse_btn = tk.Button(root, textvariable=browse_text, command=lambda:open_file(), font="Raleway", bg="#20bebe", fg="white", height=2, width=15)
browse_text.set("Browse")
browse_btn.grid(column=1, row=2)
canvas = tk.Canvas(root, width=600, height=250)
canvas.grid(columnspan=3)
root.mainloop()
from IPython.display import Image
Image(filename="final_result.jpg")
အသေးစိတ် ပိုနားလည်လိုပါ အောက် ဗွီဒီယိုဖိုင်တွင် ဆက်လက် လေ့လာနိုင်ပါသည်။
Ref: https://www.youtube.com/watch?v=itRLRfuL_PQ
End-