מדריך | תרגום לא מקוון - באמצעות AI, בטא...
-
שנים חיפשתי תוכנה שתוכל לתרגם לי מאנגלית לעברית באופן לא מקוון, ושנים חלמתי על משהו שיתרגם תוכנות באופן אוטומטי...
האם החלום התגשם? לא. אבל יש פה משהו חלקי, ובגרסת בטא בלבד.
בהמשך הפוסט אסביר את המעלות והחסרונות, ומה שיש עוד לעשות.הנה מדריך מקוצר מאוד, פירוט והסבר מפורט מיד אחרי!
א. השימוש
אחרי שהורדתם הכל, אם ברצונכם לתרגם חלון שלם, הפעילו את הסקריפט, לחצו על מספר החלון שאותו אתם רוצים לתרגם, וקבלו חלון קופץ של POT עם התרגום.
אם אתם סתם רוצים לתרגם טקסט, בחרו קיצור מקשים בתוכנה [Hotkey], בחרו את הטקסט לתרגום ולחצו על קיצור המקשים, או פתחו את חלון התרגום.ב. ההורדה
לבעלי רשת, כאן:
https://mitmachim.top/post/855115
לאלו שב"ה אין להם:
הורידו את הסקריפט
הורידו את POT
הורידו את ollama
הורידו את המודל
כעת, נשאר להגדיר את המודל, ע"י יצירת קובץ וכתיבת פקודה בשורת הפקודה [פירוט בספויילר, בהמשך]
ולהגדיר את POT לעבוד עם ollama.
זהו!וכעת בארוכה...
התוכנה מתחלקת ל3:
תוכנת קריאת המסך
תוכנת התרגום
ותוכנת הטיפול בAI [לא מצאתי הגדרה יותר מדוייקת, הסבר בהמשך הפוסט].תוכנת קריאת המסך:
זהו סקריפט שאת בסיסו יצר @האדם-החושב ושיפרתי מעט באמצעות @ChatGPT [לא היוזר... הצ'אט...] הסקריפט משתמש בספריה מובנית, שפשוט קוראת את הטקסט שמודפסת למסך, ללא צורך בOCR מה שממהר את הדבר, חוסך במשאבים ומדויק לגמרי. החסרון, שהוא גם עלול לפשל בתוכנות ישנות, שלא מותאמות למערכות ווינדוס החדשות.
תוכנת התרגום:
התוכנה נקראית POT, כרגע באנגלית, תרגמתי אותה ובגרסה הבאה בעז"ה היא תהיה בעברית.
התוכנה מקבלת את הטקסט מהסקריפט, ושולחת אותו לתוכנה הבאה.
[אגב, לתוכנה אין אפשרות לתרגום לעברית, @האדם-החושב ביקש מהמפתח, נקווה שהוא יענה. לענייננו, בהמשך ההדרכה נראה איך עוקפים את זה... ]
תוכנת הטיפול בAI:
תוכנת ollama, אם הבנתי נכון, נועדה לקבל מודלי AI, ואז לפתוח שרת מקומי, לקבל בקשות ולהחזירן. אם, נניח, אני רוצה לכתוב תוכנה שתתמשק עם מודלי AI, אבל אני לא רוצה להתעסק איתם, אני פשוט קורא לollama, עם בקשה, והיא מטפלת במודל ומחזירה לי את התשובה.וכעת לעבודה:
הסקריפט:
איסוף טקסט מהמסך.exeהנה קוד המקורimport tkinter as tk from tkinter import messagebox from pywinauto import Desktop import requests # פונקציה לשליחת טקסט לשרת def send_to_server(window_index): try: selected_window = windows[window_index] elements = [element.window_text() for element in selected_window.descendants() if element.element_info.control_type == "Text"] join_list = "\n".join(elements) # שליחת הנתונים לשרת requests.post("http://127.0.0.1:60828/translate", data=join_list) show_success_message("הטקסט נשלח בהצלחה!") except Exception as e: messagebox.showerror("שגיאה", f"שגיאה בשליחה: {e}") # פונקציה להראות הודעת הצלחה ולסגור אוטומטית def show_success_message(message): success_window = tk.Toplevel(root) success_window.title("הצלחה") label = tk.Label(success_window, text=message) label.pack(padx=20, pady=20) # סגירת החלון לאחר 2.5 שניות success_window.after(2500, success_window.destroy) # פונקציה לרענון רשימת החלונות def refresh_windows(): global windows windows = desktop.windows() listbox.delete(0, tk.END) # ניקוי הרשימה הקודמת for i, window in enumerate(windows): listbox.insert(tk.END, f"{i}: {window.window_text()}") # פונקציה לטיפול בלחיצה על מקש def on_key_press(event): if event.char.isdigit(): index = int(event.char) if 0 <= index < len(windows): send_to_server(index) else: messagebox.showwarning("בחירה לא תקינה", "אנא הכנס מספר תקין.") # יצירת חלון GUI root = tk.Tk() root.title("בחירת חלון") # קבלת כל החלונות הפתוחים desktop = Desktop(backend="uia") windows = desktop.windows() # יצירת תיבת רשימה להצגת כל החלונות הפתוחים עם מספרים listbox = tk.Listbox(root, height=15, width=50) refresh_windows() # רענון ראשוני של הרשימה listbox.pack() # יצירת כפתור רענון refresh_button = tk.Button(root, text="רענן", command=refresh_windows) refresh_button.pack() # חיבור אירוע למקש root.bind("<Key>", on_key_press) # יצירת כפתור יציאה exit_button = tk.Button(root, text="יציאה", command=root.quit) exit_button.pack() # הפעלת הלולאת GUI root.mainloop()
פוט:
https://github.com/pot-app/pot-desktop
הורדה ישירה:
https://github.com/pot-app/pot-desktop/releases/download/3.0.5/pot_3.0.5_x64-setup.exeollama:
יש הדרכה בפוסט הזה, https://mitmachim.top/post/850262
צריך רק את המודל של דיקטה!
עדכון: מודל נוסף בפוסט הבא!
אם אתם מחוברים לרשת, הפעילו את ollama, ובשורת הפקודה הדביקו:ollama run aminadaven/dictalm2.0:q4_k_m
הוא יעשה הכל לבד...
אבל בקיצור: התקינו את התוכנה:
https://ollama.com/download/OllamaSetup.exe
הורידו את המודל:
https://huggingface.co/dicta-il/dictalm2.0-GGUF/blob/main/dictalm2.0.Q4_K_M.gguf
ניצור קובץ בשם Modelfile ונכתוב בו את השורה הבאה:FROM "C:\Users\sivan22\Downloads\dictalm2.0-instruct.Q4_K_M.gguf"
כמובן שנחליף את הנתיב בנתיב המדוייק לקובץ שהורדנו מקודם.
נריץ בשורת פקודה כשתוכנת ollama פועלת את השורה הבאה:ollama create dictaLM -f Modelfile
כמובן שצריך לספק את המיקום המדוייק של הקובץ בשם Modelfile שיצרנו לעיל. (כלומר במקום Modelfile אפשר לכתוב "C:\Users\sivna22\Downloads\Modelfile")
כעת ניתן למחוק את הקובץ, התוכנה כותבת אותו לעצמה [ככה אני חושב, מקווה לא טעיתי...].
שלב אחרון: הגדרת תוכנת התרגום.
הפעל את תוכנת ollama, פתח את POT, בלשונית "שירות" נפתח את "הוסף שירות מובנה", נגלול עד שנגיע לollama, נבחר וליד הכיתוב "מודל" [מודל הAI] נכתוב dictaLM, בחלונית USER נוסיף את המילה hebrew, כמו בתמונה האחרונה, כך שהמודל ידע שהוא צריך לתרגם לעברית.
ואז נלחץ על save [שמור] וזהו!
קרדיט ל @sivan22 שלימד אותי את זה!אם אחרי שהקלדתם את המודל כתוב "מוכן", הצלחתם. אם כתוב "התקן", אז בדקו את רשימת המודלים המותקנים בתוכנה [בהתקנה מהרשת זה יכול להקרא dictaLM:latest]. איך בודקים? כותבים בשורת הפקודה: ollama list, והמודלים מוצגים.
תמונות של התהליך, בספויילר.
שימו לב, זה מהזמן שהתוכנה עוד הייתה באנגלית...
כעת, כשנריץ את הסקריפט הוא יתן לנו את רשימת החלונות, ובבחירת חלון הטקסט שלו יאסף, ילך אל POT שתבקש מollama לתרגם אותו, ואז יוצג לנו התרגום בחלון קופץ [המתקרא "פופ-אפ"].
החסרונות:
מודל הAI של דיקטה הוא גדול, יותר מ4GB.
זה גם תופס מקום, וגם, ובעיקר, צורך המון משאבים, ועד שהוא מתרגם זה...
חשבתי להשתמש במודלים קטנים, של הלסינקי, אך הם לא מתרימים לתוכנת ollama. אין לי פתרון לזה כרגע.
חסרון נוסף:
למרות שבפרומפט שPOT שלוח לollama יש אזהרות ברורות לתרגום בלבד, המודל של דיקטה מתעלם מהם לפעמים, ולא תמיד נותן רק תרגום... אולי צריך לכתוב את האזהרות הללו בעברית...לתגובות, נפתח נושא חדש, אנא הגיבו רק שם!!!
https://mitmachim.top/topic/75234/שאלה-תגובה-על-מדריך-לתרגום-מסך?_=1727390277742@sivan22 אשמח שתסתכל על זה, ותעיר הערותיך.
-
עדכון:
מצאתי כעת מודל של דיקטה, קטן יותר [וממילא מהיר יותר]. אין לי התרשמות מעשית כעת מהמודל.
למחוברים לרשת:ollama run aminadaven/dictalm2.0-instruct:q2_k
והקלידו בהגדרות POT [במודל] aminadaven/dictalm2.0-instruct:q2_k
לאינם מחוברים, הורידו את המודל הזה, צרו קובץ כנ"ל והריצו אותו בשורת הפקודה כנ"ל. -
פוסט זה נמחק!
-
@י-פל כתב במדריך | תרגום לא מקוון - באמצעות AI, בטא...:
עדכון:
מצאתי כעת מודל של דיקטה, קטן יותר [וממילא מהיר יותר]. אין לי התרשמות מעשית כעת מהמודל.בדרך כלל מודל קטן יותר מ-q4 לא מומלץ לשימוש, מכיוון שהביצועים שלו נפגעים מאוד. גרסת ה-q2 אמורה להיות ממש ממש גרועה
-
אמרו שהפוסט ארוך...
אז הנה בקצרה ממש, אם אתם מחוברים לרשת, העתיקו לפוואר-של את השורות הללו:winget install --id=Ollama.Ollama -e
ואז:
winget install --id=Pylogmon.pot -e
ואז:
ollama run aminadaven/dictalm2.0:q4_k_m
הורידו את הסקריפט, ונשאר לכם רק להגדיר את POT.
בהצלחה!