Gemini API รองรับอินพุต PDF รวมถึงเอกสารที่มีความยาว (สูงสุด 3, 600 หน้า) โมเดล Gemini จะประมวลผล PDF ด้วยระบบการมองเห็นแบบดั้งเดิม จึงเข้าใจทั้งเนื้อหาข้อความและรูปภาพในเอกสาร โมเดล Gemini จะทําสิ่งต่อไปนี้ได้เมื่อรองรับ PDF แบบเนทีฟ
- วิเคราะห์แผนภาพ แผนภูมิ และตารางในเอกสาร
- ดึงข้อมูลในรูปแบบเอาต์พุตที่มีโครงสร้าง
- ตอบคำถามเกี่ยวกับเนื้อหาที่เป็นภาพและข้อความในเอกสาร
- สรุปเอกสาร
- ถอดเสียงเนื้อหาเอกสาร (เช่น เป็น HTML) โดยคงเลย์เอาต์และการจัดรูปแบบไว้เพื่อใช้ในแอปพลิเคชันดาวน์สตรีม
บทแนะนำนี้จะแสดงวิธีต่างๆ ในการใช้ Gemini API เพื่อประมวลผลเอกสาร PDF
อินพุต PDF
สำหรับเพย์โหลด PDF น้อยกว่า 20 MB คุณสามารถเลือกระหว่างการอัปโหลดเอกสารที่เข้ารหัส 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 และ 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
- มาร์กดาวน์ -
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 เสมอเมื่อคำขอทั้งหมด (รวมถึงไฟล์ ข้อความแจ้ง ระบบ วิธีการ ฯลฯ) มีขนาดใหญ่กว่า 20 MB
โทรหา 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 หลายไฟล์
Gemini API สามารถประมวลผลเอกสาร 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 รองรับการแจ้งด้วยข้อมูลข้อความ รูปภาพ เสียง และวิดีโอ หรือที่เรียกว่าการแจ้งแบบหลายรูปแบบ
- คำสั่งของระบบ: คำสั่งของระบบช่วยให้คุณควบคุมลักษณะการทํางานของโมเดลตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง