דילוג לתוכן

עזרה הדדית - בינה מלאכותית

1.1k נושאים 29.5k פוסטים

⚠ שימו לב!, אין לדון על נושאי בינה מלאכותית שאינן מועילות לתכנות ולמתכנתים.

  • 0 הצבעות
    69 פוסטים
    2k צפיות
    ל
    @פראירי לא‌​‌‌​‌​​​​​‌ יודע יצאתי מבולבל ממה שכתוב שם
  • בירור | בוט AI להטמעה באתר

    לא נפתר
    53
    0 הצבעות
    53 פוסטים
    1k צפיות
    פרוזיפ
    @es0583292679 אכן‌​‌‌​‌​​​​​‌ אתה צודק בכל מילה, אך גם פיתוח האתר לא עלה לי כסף, וכן אני לא מרוויח כלום מהאתר, זה אתר שנועד לשמש קהילה כל שהיא של אנשים, וב"ה הוא עושה את זה מצויין, ויש לו מאות כניסות בחודש... ולכן אני לא רואה צורך להשקיע בזה כסף אא"כ זה ממש סכום פעוט... סכ"ה אני רוצה לשדרג את חווית המשתמשים
  • בירור | בינה מלאכותית והאנושות - לאן?

    400
    7 הצבעות
    400 פוסטים
    25k צפיות
    N
    @יודע-ספר שלחתי לבדיקה בנטפרי @יודע-ספר זה אמור להיפתח?
  • בקשה | המרת ספר בAI אנא פורמט

    7
    0 הצבעות
    7 פוסטים
    168 צפיות
    ר
    הדרכה מעט יותר מפורטת תוציא מפתח API חינמי מפה https://aistudio.google.com/app/apikey אם אין לך פייתון תתקין תתקין את pip install PyMuPDF opencv-python numpy EbookLib pillow google-genai צור קובץ עם סיומת PY ושמור בו את הסקריפט בהמשך תריץ את הסקריפט (לא מתחייב שאין בו באגים, לקחתי סקריפט שהשתמשתי איתו ושיפרתי לו באמצעות AI את חויית המשתמש אני מקווה שהוא לא הוסיף משלו ) import os import sys import time import re import shutil import concurrent.futures from uuid import uuid4 # ============================================================================== # שלב 1: בדיקה שכל הספריות מותקנות (ידידותי למשתמש) # ============================================================================== try: import fitz # PyMuPDF import cv2 import numpy as np from ebooklib import epub, ITEM_IMAGE from google import genai from google.genai import types from PIL import Image except ImportError as e: print("❌ חסרים רכיבים להרצת התוכנה!") print("כדי להתקין אותם, פתח את שורת הפקודה (CMD או Terminal) והדבק את הפקודה הבאה:") print("\npip install PyMuPDF opencv-python numpy EbookLib pillow google-genai\n") input("לאחר ההתקנה, לחץ אנטר כדי לצאת ונסה להריץ שוב...") sys.exit() # ============================================================================== # שלב 2: הגדרת סביבת העבודה (תיקיות הקלט והפלט) # ============================================================================== BASE_DIR = os.path.dirname(os.path.abspath(__file__)) INPUT_DIR = os.path.join(BASE_DIR, "input_books") OUTPUT_DIR = os.path.join(BASE_DIR, "output_books") KEY_FILE = os.path.join(BASE_DIR, "api_key.txt") os.makedirs(INPUT_DIR, exist_ok=True) os.makedirs(OUTPUT_DIR, exist_ok=True) def log(msg): print(msg, flush=True) # ============================================================================== # שלב 3: ניהול מפתח API ותפריט למשתמש # ============================================================================== print("========================================") print(" ברוכים הבאים לממיר הספרים החכם של Gemini") print("========================================\n") # בדיקה אם יש מפתח API שמור API_KEY = "" if os.path.exists(KEY_FILE): with open(KEY_FILE, "r") as f: API_KEY = f.read().strip() if not API_KEY: print("נראה שזו פעם ראשונה שאתה מריץ את התוכנה.") print("תוכל להנפיק מפתח API חינמי באתר: https://aistudio.google.com/app/apikey") API_KEY = input("אנא הדבק את מפתח ה-API שלך כאן ולחץ אנטר: ").strip() with open(KEY_FILE, "w") as f: f.write(API_KEY) print("✅ המפתח נשמר בהצלחה לקריאות הבאות!\n") client = genai.Client(api_key=API_KEY) print("באיזה מצב תרצה להריץ את ההמרה?") print("1. מצב מהיר (Fast Lite) - טוב לרוב הספרים, חוסך זמן.") print("2. מצב איכותי (Strict Clean) - מודל כבד יותר, מתאים לטקסטים מורכבים במיוחד.") choice = input("בחר 1 או 2 (ברירת מחדל 1): ").strip() if choice == "2": MODE = "STRICT_CLEAN" MODEL_NAME = "gemini-3-flash" # בהתאם למודלים שביקשת log(f"\n--- נבחר מצב איכותי ({MODEL_NAME}) ---") else: MODE = "FAST_LITE" MODEL_NAME = "gemini-3.1-flash-lite" log(f"\n--- נבחר מצב מהיר ({MODEL_NAME}) ---") # המתנה למשתמש שישים קבצים files = [f for f in os.listdir(INPUT_DIR) if f.lower().endswith((".pdf", ".epub"))] if not files: print(f"\n⚠️ התיקייה {INPUT_DIR} ריקה!") print("אנא גרור לתוכה קבצי PDF או EPUB שברצונך להמיר.") input("לאחר שהכנסת קבצים לתיקייה, לחץ אנטר כדי להתחיל...") files = [f for f in os.listdir(INPUT_DIR) if f.lower().endswith((".pdf", ".epub"))] if not files: print("עדיין לא נמצאו קבצים. התוכנה נסגרת.") sys.exit() # ============================================================================== # פונקציות העבודה המקוריות (הותאמו במקצת) # ============================================================================== PREMIUM_PROMPT = """ אתה פועל בשני שלבים קשיחים: שלב 1 (ניתוח ויזואלי): תאר לעצמך (במחשבה הפנימית שלך) את צורת האותיות המדויקת שאתה רואה בתמונה עבור המילים המומצאות, בלי לנסות לחבר אותן למילים אמיתיות בעברית. שלב 2 (הפלט הסופי): פלוט אך ורק את התווים הפיזיים שזיהית בשלב 1 חוקים קריטיים נוספים: 1. שיבוץ תמונות וציורים: אל תשכח לשבץ כל תמונה , מפה או ציור שאתה רואה במקום המדויק שלו יחסית לטקסט בעמוד באמצעות תגית <img src="image_{page}_{index}.png" />. 2. דפים גרפיים מלאים: אם העמוד הוא מפה (MAP) או ציור שלם ללא טקסט סיפורי בכלל, פלוט אך ורק את התג הבא: <GRAPHIC_PAGE_DETECTED /> 3. פורמט: פלוט טקסט נקי בתוך קוד HTML בעברית עם כיווניות מימין לשמאל: <div dir="rtl">. השתמש בתגיות <p> עבור פסקאות. 4. ללא קוד מרקדאון: אל תעטוף בסימני ```html או ```. פלוט את הטקסט ישירות. """ FAST_PROMPT = """ ACT AS A HIGH-PRECISION OCR ENGINE. YOUR TASK: Convert this image to HTML with 100% literal fidelity. CRITICAL RULES: 1. EXACT TRANSCRIPTION: Transcribe exactly the characters you see. Do NOT substitute or guess based on Hebrew grammar. 2. IMAGES & MAPS: If you see any map, drawing, or illustration, insert an <img src="image_{page}_{index}.png" /> tag exactly where it appears relative to the text. 3. FULL PAGE GRAPHICS: If the page is a MAP or ILLUSTRATION with no body text, output ONLY: <GRAPHIC_PAGE_DETECTED /> 4. FORMATTING: Use Hebrew (RTL), wrap in <div dir="rtl">. Use <p> for paragraphs. 5. OUTPUT ONLY HTML. NO MARKDOWN CODE BLOCKS. NO INTRO/OUTRO. """ CURRENT_PROMPT = PREMIUM_PROMPT if MODE == "STRICT_CLEAN" else FAST_PROMPT def clean_html(raw_html): if not raw_html or "<GRAPHIC_PAGE_DETECTED />" in raw_html: return "<GRAPHIC_PAGE_DETECTED />" return raw_html.replace("```html", "").replace("```", "").strip() def boost_image_quality(img_path): try: with Image.open(img_path) as img: if img.width < 2000: new_size = (img.width * 2, img.height * 2) img = img.resize(new_size, Image.Resampling.LANCZOS) img.save(img_path, quality=95) except Exception as e: log(f" [אזהרה] שיפור איכות נכשל: {e}") def advance_opencv_clean(img_path): try: img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None: return thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1] coords = np.column_stack(np.where(thresh > 0)) if len(coords) == 0: return # תיקון הבאג של עמוד ריק angle = cv2.minAreaRect(coords)[-1] if angle < -45: angle = -(90 + angle) else: angle = -angle if 0.5 < abs(angle) < 15: (h, w) = img.shape[:2] center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, angle, 1.0) img = cv2.warpAffine(img, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE) img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 21, 15) cv2.imwrite(img_path, img) except Exception as e: log(f" [אזהרה] ניקוי OpenCV נכשל: {e}") def extract_images_from_epub(epub_path, cache_dir): book = epub.read_epub(epub_path) page_images = [] images = [item for item in book.get_items() if item.get_type() == ITEM_IMAGE] def natural_sort_key(item): fname = item.file_name.split('/')[-1].lower() if 'cover' in fname: return (0, 0) numbers = [int(s) for s in re.findall(r'\d+', fname)] if numbers: return (1, numbers[0]) return (2, fname) images.sort(key=natural_sort_key) for i, img_item in enumerate(images): img_ext = img_item.file_name.split('.')[-1] img_name = f"page_raw_{i:04d}.{img_ext}" path = os.path.join(cache_dir, img_name) with open(path, "wb") as f: f.write(img_item.content) page_images.append((i, path)) return page_images def build_final_epub(filename, cache_dir, total_pages): book = epub.EpubBook() book.set_identifier(str(uuid4())) book.set_title(filename.rsplit('.', 1)[0]) book.set_language('he') style = 'body { direction: rtl; text-align: right; font-family: "Arial", sans-serif; line-height: 1.6; } img { max-width: 100%; height: auto; display: block; margin: 0 auto; }' spine = ['nav'] for i in range(total_pages): html_path = os.path.join(cache_dir, f"page_{i}.html") if not os.path.exists(html_path): continue with open(html_path, "r", encoding="utf-8") as f: content = f.read() chapter = epub.EpubHtml(title=f'Page {i+1}', file_name=f'page_{i+1}.xhtml', lang='he') if "<GRAPHIC_PAGE_DETECTED />" in content: img_file = f"image_{i}_0.png" chapter.content = f'<html><head><style>{style}</style></head><body style="margin:0;"><img src="{img_file}" style="width:100%" /></body></html>' else: chapter.content = f'<html><head><style>{style}</style></head><body>{content}</body></html>' book.add_item(chapter) spine.append(chapter) for f in os.listdir(cache_dir): if f.startswith(f"image_{i}_") and f.endswith(".png"): with open(os.path.join(cache_dir, f), "rb") as img_f: book.add_item(epub.EpubItem(uid=f.replace(".","_"), file_name=f, media_type="image/png", content=img_f.read())) book.spine = spine suffix = "_premium.epub" if MODE == "STRICT_CLEAN" else "_fast_lite.epub" out = filename.rsplit('.', 1)[0] + suffix epub.write_epub(os.path.join(OUTPUT_DIR, out), book) log(f"\n הושלמה המרת הספר: {out}") log(f" הקובץ ממתין לך בתיקיית: {OUTPUT_DIR}") def process_file(filename): filepath = os.path.join(INPUT_DIR, filename) cache_tag = "premium" if MODE == "STRICT_CLEAN" else "fast_lite" cache_dir = os.path.join(OUTPUT_DIR, f".cache_{cache_tag}_{filename.replace('.', '_').replace(' ', '_')}") os.makedirs(cache_dir, exist_ok=True) pages = [] log(f"\n>> מתחיל לעבד את הספר: {filename}...") if filename.lower().endswith(".pdf"): doc = fitz.open(filepath) for i in range(len(doc)): img_path = os.path.join(cache_dir, f"temp_p_{i}.png") if not os.path.exists(os.path.join(cache_dir, f"page_{i}.html")): pix = doc[i].get_pixmap(matrix=fitz.Matrix(4, 4)) pix.save(img_path) for idx, img in enumerate(doc[i].get_images(full=True)): with open(os.path.join(cache_dir, f"image_{i}_{idx}.png"), "wb") as f: f.write(doc.extract_image(img[0])["image"]) pages.append((i, img_path)) elif filename.lower().endswith(".epub"): pages = extract_images_from_epub(filepath, cache_dir) for i, p in pages: with open(p, "rb") as f: with open(os.path.join(cache_dir, f"image_{i}_0.png"), "wb") as out: out.write(f.read()) for i, img_path in pages: page_cache = os.path.join(cache_dir, f"page_{i}.html") if os.path.exists(page_cache): with open(page_cache, "r", encoding="utf-8") as f: existing_content = f.read().strip() if len(existing_content) > 20 or "<div dir='rtl'></div>" in existing_content or "image_" in existing_content: continue boost_image_quality(img_path) if MODE == "STRICT_CLEAN": advance_opencv_clean(img_path) max_retries = 3 for attempt in range(max_retries): start_t = time.time() try: with open(img_path, "rb") as f: image_bytes = f.read() image_part = types.Part.from_bytes(data=image_bytes, mime_type='image/png') # הזרקה בטוחה של האינדקס לפרומפט למניעת קריסות פירמוט formatted_prompt = CURRENT_PROMPT.replace("{page}", str(i)).replace("{index}", "0") resp = client.models.generate_content( model=MODEL_NAME, contents=[image_part, formatted_prompt], config={ 'temperature': 1.0, 'max_output_tokens': 8192, } ) try: output_text = resp.text if resp.text else "" except Exception: output_text = "" if not output_text: output_text = "<div dir='rtl'></div>" with open(page_cache, "w", encoding="utf-8") as f: f.write(clean_html(output_text)) log(f"[{filename}] עמוד {i+1}/{len(pages)} פוענח בהצלחה ✅") time.sleep(max(0.1, 4.1 - (time.time() - start_t))) break except Exception as e: log(f"[{filename}] שגיאה בעמוד {i+1} (ניסיון {attempt+1}/{max_retries}): {e}") time.sleep(10) else: log(f"[{filename}] ❌ כישלון בעמוד {i+1}. משבץ תמונה במקום טקסט.") fallback_img_name = f"image_{i}_fallback.png" shutil.copy(img_path, os.path.join(cache_dir, fallback_img_name)) with open(page_cache, "w", encoding="utf-8") as f: f.write(f"<div dir='rtl'><img src='{fallback_img_name}' style='width:100%' /></div>") build_final_epub(filename, cache_dir, len(pages)) if __name__ == "__main__": MAX_WORKERS = 3 log(f"\n מתחיל בעיבוד {len(files)} ספרים מתיקיית ה-input_books...") with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: executor.map(process_file, files) print("\n✅ כל הספרים עובדו בהצלחה! אפשר לסגור את החלון.") input("לחץ אנטר ליציאה...") (זה ממיר ל EPUB אם אתה רוצה המרה לטקסט תבקש מ AI עזרה לשינוי הפרופמט או שתשנה בעצמך)
  • שיתוף | SoundForge AI אתר להפיכת טקסט לדיבור ברמה מקצועית!

    86
    37 הצבעות
    86 פוסטים
    8k צפיות
    ה
    אני מאוד היתי מחפש אפשרות לכמה מפתחות וישריץ בו זמנית למהירות יותר ולתת גם המוווון מילים לא רק קרינות גם שיעור שלם
  • בירור | אופוס 5, מישהו ניסה?

    9
    0 הצבעות
    9 פוסטים
    304 צפיות
    צדיק 0צ
    @עידו300 מצאתי אותו יעיל יותר באיתור באגים אבל הוא סובל מעודף ביטחון עצמי
  • בירור | קלוד שיתופי

    9
    3 הצבעות
    9 פוסטים
    249 צפיות
    פ
    @צול-גאה זה נראה לי אותו דבר דהיינו במנוי של המקס אתה מקבל מכסות פי חמש מהפרו והמחיר בהתאם
  • בעיה | קריסה בשרתי קלוד?

    11
    1
    1 הצבעות
    11 פוסטים
    310 צפיות
    מטען ניידמ
    @I-believe קרס‌​‌‌​‌​​​​​‌ וחזר לעצמו אחרי כמה דקות עכשיו אני משתמש בו רגיל
  • להורדה | דורות ישרימיוזיק - סרטונים מהמשפחה לסבא וסבתא!

    3
    3 הצבעות
    3 פוסטים
    133 צפיות
    מים אחרוניםמ
    @שלמה-רביב לזקנים הללו יש נכדים/בנים. אני מדבר על יהודי מבוגר וחולה. אני מתקין לו את זה פעם אחת. מעכשיו והלאה, אשתו מפעילה את זה כל פעם.
  • המלצה | בוט סמס שינון השס ושו"ע (חינם לגמרי)

    15
    3 הצבעות
    15 פוסטים
    398 צפיות
    א
    @אוטומציות-1 שיעמוד על הנקודות המרכזיות בתוספות, ואם חולק על רש"י - שיכתוב. שוב, יישר כוח עצום!
  • מדריך | הדרכות ליצירת תמונות \ שירים \ סרטונים בAI

    24
    4
    22 הצבעות
    24 פוסטים
    2k צפיות
    מוקד המערכותמ
    @יענקלה-AI חסום בנטפרי? אתה יענקלה AI הידוע?
  • בירור | AI לקידוד איזה עדיף?

    9
    2
    0 הצבעות
    9 פוסטים
    364 צפיות
    המלאךה
    @עד-הניצחון אתה הבנת מה כתבת? בכל מקרה @123-דג-מלוח כתב: ולא רק מסברא או מניסיון רק של אחד)
  • 0 הצבעות
    7 פוסטים
    221 צפיות
    ה
    @י.-פל. אני מאוד נהנה.... 60 ש"ח לחודש... מודל שלהם.
  • בירור | מעבר מקלוד לGPT בקלוד קוד או לעבור לקודקס?

    4
    0 הצבעות
    4 פוסטים
    243 צפיות
    ס
    @צדיק-0 אגב, לא יודע מה עשית בסוף בהתחשב במצב העכשווי המדדים שלהם ממש צמודים. אני אישית ממליץ על קודקס יותר מקלוד קוד.
  • בקשת מידע | אופוס 5 לא עובד מעל מצב חשיבה גבוה

    לא נפתר
    10
    0 הצבעות
    10 פוסטים
    231 צפיות
    מתכנת חובבמ
    @Yehuda-1 לא ניסית max - ניסית xhigh
  • שיתוף | עזרה בבניית פרויקטים עם Claude Code ללא עלות

    נעול
    127
    34 הצבעות
    127 פוסטים
    6k צפיות
    חייא שיאומיח
    שולח‌​‌‌​‌​​​​​‌ בקשה תודה רבה!
  • 0 הצבעות
    13 פוסטים
    461 צפיות
    י
    @צדיק-0 צודק, באמת לא הבנתי איך הוא הגיע לke.. תודה
  • בעיה | קלוד קוד לא מוכן להעלות ריפו בשמי לגיטהאב! 😖

    לא נפתר
    18
    0 הצבעות
    18 פוסטים
    695 צפיות
    נ
    @בנימין-מחשבים אצלי הרבה פעולות בגיטהאב לא עובדות בגלל החסימה ('הסינון אינטרנט' איך שקראת לזה...). למשל אין הסטוריית שיחות ולפעמים אי אפשר לערוך את הקבצים סתם כך או להעלות קובץ חדש.
  • עזרה | הודעה מקלוד

    7
    1
    0 הצבעות
    7 פוסטים
    180 צפיות
    ש
    @חד-צורבא נראה (ע"פ מה שכתוב שם) שהחשבון פשוט ייסגר בלי תלות במה שתעשה, ואז תצטרך לפתוח חדש
  • בקשת מידע | AI לתמונות?

    6
    0 הצבעות
    6 פוסטים
    197 צפיות
    ק
    @עידו300 אני מתעסק הרבה עם GPT בתוכנית חינמית ומצליח להוציא תוצאות מעולות (כמובן שזה אחרי זמן שלמדתי מה ואיך לכתוב ויצרתי פרומפטים מדוייקים ), ויש תמונות שערכתי איתו שרק אם תגדיל לרמה ממש גבוהה (יותר קרוב לרמת הפיקסל) אתה תראה שמדובר בתמונת AI (את הסגנוון המרוטש המוזר הזה שמרכיב את כל תמונות הAI) אבל במביט רגיל אפי' לא תשים לב!.