הבנת מסמכים

Gemini API תומך בקלט בפורמט PDF, כולל מסמכים ארוכים (עד 3,600 דפים). המודלים של Gemini מעבדים קובצי PDF באמצעות ראייה מקורית, ולכן הם יכולים להבין גם תוכן טקסט וגם תוכן תמונה במסמכים. בעזרת תמיכה מקורית ב-PDF, מודלים של Gemini יכולים:

  • לנתח דיאגרמות, תרשימים וטבלאות במסמכים
  • חילוץ מידע לפורמטים מובְנים של פלט
  • מענה על שאלות לגבי תוכן חזותי וטקסטואלי במסמכים
  • לסכם מסמכים
  • תמלול תוכן של מסמך (למשל ל-HTML) תוך שמירה על פריסות ועיצוב, לשימוש באפליקציות במורד הזרם

במדריך הזה נסביר כמה דרכים אפשריות לשימוש ב-Gemini API לעיבוד מסמכי PDF.

קלט בפורמט PDF

בעומס שימושי של קובצי PDF שגודלם קטן מ-20MB, אפשר לבחור בין העלאת מסמכים בקידוד base64 לבין העלאה ישירה של קבצים שמאוחסנים באופן מקומי.

כנתונים מוטמעים

אפשר לעבד מסמכי PDF ישירות מכתובות URL. הנה קטע קוד שמראה איך עושים את זה:

from google import genai
from google.genai import types
import httpx

client = genai.Client()

doc_url = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"

# Retrieve and encode the PDF byte
doc_data = httpx.get(doc_url).content

prompt = "Summarize this document"
response = client.models.generate_content(
  model="gemini-2.0-flash",
  contents=[
      types.Part.from_bytes(
        data=doc_data,
        mime_type='application/pdf',
      ),
      prompt])
print(response.text)

פרטים טכניים

ב-Gemini 1.5 Pro וב-Gemini 1.5 Flash יש תמיכה ב-3,600 דפי מסמכים לכל היותר. דפי המסמך חייבים להיות באחד מסוגי ה-MIME הבאים של נתוני טקסט:

  • PDF – application/pdf
  • JavaScript – ‏application/x-javascript, ‏text/javascript
  • Python –‏ application/x-python, text/x-python
  • TXT –‏ text/plain
  • HTML – text/html
  • CSS –‏ text/css
  • Markdown – text/md
  • CSV –‏ text/csv
  • XML – text/xml
  • RTF –‏ text/rtf

כל דף במסמך שווה ל-258 אסימונים.

אין מגבלות ספציפיות למספר הפיקסלים במסמך, מלבד חלון ההקשר של המודל. עם זאת, דפים גדולים יותר מוקטנים לרזולוציה מקסימלית של 3072x3072 תוך שמירה על יחס הגובה-רוחב המקורי שלהם, ודפים קטנים יותר מוגדלים לרזולוציה של 768x768 פיקסלים. אין הפחתת עלות של עמודים בגדלים קטנים יותר, מלבד רוחב הפס, או שיפור בביצועים של עמודים ברזולוציה גבוהה יותר.

לקבלת התוצאות הטובות ביותר:

  • לפני ההעלאה, צריך לסובב את הדפים לכיוון הנכון.
  • הימנעו מדפים מטושטשים.
  • אם משתמשים בדף יחיד, צריך למקם את הנחיית הטקסט אחרי הדף.

קובצי PDF שמאוחסנים באופן מקומי

בקובצי PDF שמאוחסנים באופן מקומי, אפשר להשתמש בשיטה הבאה:

from google import genai
from google.genai import types
import pathlib
import httpx

client = genai.Client()

doc_url = "https://discovery.ucl.ac.uk/id/eprint/10089234/1/343019_3_art_0_py4t4l_convrt.pdf"

# Retrieve and encode the PDF byte
filepath = pathlib.Path('file.pdf')
filepath.write_bytes(httpx.get(doc_url).content)

prompt = "Summarize this document"
response = client.models.generate_content(
  model="gemini-2.0-flash",
  contents=[
      types.Part.from_bytes(
        data=filepath.read_bytes(),
        mime_type='application/pdf',
      ),
      prompt])
print(response.text)

קובצי PDF גדולים

אפשר להשתמש ב-File API כדי להעלות מסמך בכל גודל. תמיד צריך להשתמש ב-File API כשהגודל הכולל של הבקשה (כולל הקבצים, הנחיות הטקסט, הוראות המערכת וכו') גדול מ-20MB.

קוראים ל-media.upload כדי להעלות קובץ באמצעות File API. הקוד הבא מעלה קובץ מסמך ואז משתמש בקובץ בקריאה ל-models.generateContent.

קובצי PDF גדולים מכתובות URL

שימוש ב-File API לקובצי PDF גדולים שזמינים מכתובות URL, כדי לפשט את תהליך ההעלאה והעיבוד של המסמכים האלה ישירות דרך כתובות ה-URL שלהם:

from google import genai
from google.genai import types
import io
import httpx

client = genai.Client()

long_context_pdf_path = "https://www.nasa.gov/wp-content/uploads/static/history/alsj/a17/A17_FlightPlan.pdf"

# Retrieve and upload the PDF using the File API
doc_io = io.BytesIO(httpx.get(long_context_pdf_path).content)

sample_doc = client.files.upload(
  # You can pass a path or a file-like object here
  file=doc_io,
  config=dict(
    mime_type='application/pdf')
)

prompt = "Summarize this document"

response = client.models.generate_content(
  model="gemini-2.0-flash",
  contents=[sample_doc, prompt])
print(response.text)

קובצי PDF גדולים שמאוחסנים באופן מקומי

from google import genai
from google.genai import types
import pathlib
import httpx

client = genai.Client()

long_context_pdf_path = "https://www.nasa.gov/wp-content/uploads/static/history/alsj/a17/A17_FlightPlan.pdf"

# Retrieve the PDF
file_path = pathlib.Path('A17.pdf')
file_path.write_bytes(httpx.get(long_context_pdf_path).content)

# Upload the PDF using the File API
sample_file = client.files.upload(
  file=file_path,
)

prompt="Summarize this document"

response = client.models.generate_content(
  model="gemini-2.0-flash",
  contents=[sample_file, "Summarize this document"])
print(response.text)

כדי לוודא שה-API שמר בהצלחה את הקובץ שהעליתם ולקבל את המטא-נתונים שלו, אפשר להפעיל את files.get. רק הערך של name (וכתוצאה מכך, הערך של uri) הוא ייחודי.

from google import genai
import pathlib

client = genai.Client()

fpath = pathlib.Path('example.txt')
fpath.write_text('hello')

file = client.files.upload('example.txt')

file_info = client.files.get(file.name)
print(file_info.model_dump_json(indent=4))

כמה קובצי PDF

ה-API של Gemini מסוגל לעבד כמה מסמכי PDF בבקשה אחת, כל עוד הגודל המצטבר של המסמכים וההנחיה לטקסט נמצא בחלון ההקשר של המודל.

from google import genai
import io
import httpx

client = genai.Client()

doc_url_1 = "https://arxiv.org/pdf/2312.11805"
doc_url_2 = "https://arxiv.org/pdf/2403.05530"

# Retrieve and upload both PDFs using the File API
doc_data_1 = io.BytesIO(httpx.get(doc_url_1).content)
doc_data_2 = io.BytesIO(httpx.get(doc_url_2).content)

sample_pdf_1 = client.files.upload(
  file=doc_data_1,
  config=dict(mime_type='application/pdf')
)
sample_pdf_2 = client.files.upload(
  file=doc_data_2,
  config=dict(mime_type='application/pdf')
)

prompt = "What is the difference between each of the main benchmarks between these two papers? Output these in a table."

response = client.models.generate_content(
  model="gemini-2.0-flash",
  contents=[sample_pdf_1, sample_pdf_2, prompt])
print(response.text)

המאמרים הבאים

מידע נוסף זמין במקורות המידע הבאים:

  • אסטרטגיות להצגת בקשות להעלאת קבצים: Gemini API תומך בהצגת בקשות להעלאת קבצים עם נתוני טקסט, תמונות, אודיו ווידאו, שנקראות גם בקשות להצגת נתונים במגוון מודלים.
  • הוראות מערכת: הוראות המערכת מאפשרות לכם לקבוע את התנהגות המודל בהתאם לצרכים ולתרחישים הספציפיים שלכם.