PDF belgelerinden metin ve tablo çıkarma, yeni PDF oluşturma, belgeleri birleştirme/bölme ve formlar ile çalışma işlemleri için kapsamlı bir toolkit. Claude'un PDF formları doldurması, programatik olarak PDF belgelerini işlemesi, oluşturması veya ölçekte analiz etmesi gerektiğinde kullanılır.
cd ~/.claude/skills
git clone https://github.com/smartnews/claude-skills.git claude-skills mkdir -p ~/.claude/skills/pdf
curl -fsSL https://raw.githubusercontent.com/smartnews/claude-skills/HEAD/document-skills/pdf/SKILL.md \
-o ~/.claude/skills/pdf/SKILL.md Bu kılavuz Python kütüphaneleri ve komut satırı araçları kullanarak temel PDF işleme işlemlerini kapsamaktadır. Gelişmiş özellikler, JavaScript kütüphaneleri ve detaylı örnekler için reference.md dosyasına bakınız. Eğer bir PDF formunu doldurmanız gerekiyorsa, forms.md dosyasını okuyun ve talimatlarını izleyin.
from pypdf import PdfReader, PdfWriter
# PDF'yi oku
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")
# Metni çıkar
text = ""
for page in reader.pages:
text += page.extract_text()
from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
reader = PdfReader(pdf_file)
for page in reader.pages:
writer.add_page(page)
with open("merged.pdf", "wb") as output:
writer.write(output)
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output:
writer.write(output)
reader = PdfReader("document.pdf")
meta = reader.metadata
print(f"Title: {meta.title}")
print(f"Author: {meta.author}")
print(f"Subject: {meta.subject}")
print(f"Creator: {meta.creator}")
reader = PdfReader("input.pdf")
writer = PdfWriter()
page = reader.pages[0]
page.rotate(90) # Saat yönünde 90 derece döndür
writer.add_page(page)
with open("rotated.pdf", "wb") as output:
writer.write(output)
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
with pdfplumber.open("document.pdf") as pdf:
for i, page in enumerate(pdf.pages):
tables = page.extract_tables()
for j, table in enumerate(tables):
print(f"Table {j+1} on page {i+1}:")
for row in table:
print(row)
import pandas as pd
with pdfplumber.open("document.pdf") as pdf:
all_tables = []
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
if table: # Tablonun boş olmadığını kontrol et
df = pd.DataFrame(table[1:], columns=table[0])
all_tables.append(df)
# Tüm tabloları birleştir
if all_tables:
combined_df = pd.concat(all_tables, ignore_index=True)
combined_df.to_excel("extracted_tables.xlsx", index=False)
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter
# Metin ekle
c.drawString(100, height - 100, "Hello World!")
c.drawString(100, height - 120, "This is a PDF created with reportlab")
# Çizgi ekle
c.line(100, height - 140, 400, height - 140)
# Kaydet
c.save()
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
story = []
# İçerik ekle
title = Paragraph("Report Title", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))
body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())
# Sayfa 2
story.append(Paragraph("Page 2", styles['Heading1']))
story.append(Paragraph("Content for page 2", styles['Normal']))
# PDF'yi oluştur
doc.build(story)
# Metni çıkar
pdftotext input.pdf output.txt
# Düzeni koruyan metni çıkar
pdftotext -layout input.pdf output.txt
# Belirli sayfaları çıkar
pdftotext -f 1 -l 5 input.pdf output.txt # Sayfalar 1-5
# PDF'leri birleştir
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
# Sayfaları böl
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
# Sayfaları döndür
qpdf input.pdf output.pdf --rotate=+90:1 # 1. sayfayı 90 derece döndür
# Şifreyi kaldır
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
# Birleştir
pdftk file1.pdf file2.pdf cat output merged.pdf
# Böl
pdftk input.pdf burst
# Döndür
pdftk input.pdf rotate 1east output rotated.pdf
# Gerekli: pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path
# PDF'yi resimlere dönüştür
images = convert_from_path('scanned.pdf')
# Her sayfayı OCR işlemine tabi tut
text = ""
for i, image in enumerate(images):
text += f"Page {i+1}:\n"
text += pytesseract.image_to_string(image)
text += "\n\n"
print(text)
from pypdf import PdfReader, PdfWriter
# Filigran oluştur (veya mevcut olanı yükle)
watermark = PdfReader("watermark.pdf").pages[0]
# Tüm sayfalara uygula
reader = PdfReader("document.pdf")
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open("watermarked.pdf", "wb") as output:
writer.write(output)
# pdfimages kullanarak (poppler-utils)
pdfimages -j input.pdf output_prefix
# Bu, output_prefix-000.jpg, output_prefix-001.jpg, vb. olarak tüm resimleri çıkarır
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# Şifre ekle
writer.encrypt("userpassword", "ownerpassword")
with open("encrypted.pdf", "wb") as output:
writer.write(output)
| Görev | En İyi Araç | Komut/Kod |
|---|---|---|
| PDF'leri birleştir | pypdf | writer.add_page(page) |
| PDF'leri böl | pypdf | Her sayfayı ayrı dosyaya |
| Metni çıkar | pdfplumber | page.extract_text() |
| Tabloları çıkar | pdfplumber | page.extract_tables() |
| PDF oluştur | reportlab | Canvas veya Platypus |
| Komut satırında birleştir | qpdf | qpdf --empty --pages ... |
| Taranmış PDF'lerde OCR | pytesseract | Önce görüntüye dönüştür |
| PDF formlarını doldur | pdf-lib veya pypdf (forms.md'ye bakınız) | forms.md'yi inceleyin |
.png ve .pdf dosyalarında tasarım felsefesini kullanarak güzel görseller oluşturun. Poster, sanat eseri, tasarım veya diğer statik içerikler için bu özelliği kullanabilirsiniz. Telif hakkı ihlallerinden kaçınmak için her zaman orijinal tasarımlar yaratın, mevcut sanatçıların çalışmalarını kopya etmeyin.
Kullanıcıları belgelendirme konusunda işbirlikçi yazım için yapılandırılmış bir workflow içinde rehber etmek için kullanılır. Kullanıcı belgelendirme, teknik özellikler, karar dokümanları veya benzer yapılandırılmış içerik yazma istediğinde harekete geçer. Bu workflow, bağlamı verimli bir şekilde aktarmaya, içeriği yinelemelerle geliştirmeye ve dokümanın okuyucular için işe yaradığını doğrulamaya yardımcı olur.
Bu skill'i kullanıcı Word belgesi (.docx dosyası) oluşturmak, okumak, düzenlemek veya manipüle etmek istediğinde kullanın. İçindekiler tablosu, başlık, sayfa numarası veya mektup başlığı gibi formatlı profesyonel belge talepleri, "Word doc", "word document" veya ".docx" ifadeleri geçtiğinde tetiklenir. .docx dosyalarından içerik çıkarma veya yeniden düzenleme, görsel ekleme veya değiştirme işlemleri için de kullanılır.
Kullanıcı PDF dosyaları ile herhangi bir işlem yapmak istediğinde bu skill'i kullanın. Buna PDF'lerden metin/tablo okuma ve çıkarma, birden fazla PDF'yi birleştirme, PDF'leri bölme, sayfaları döndürme, filigran ekleme, yeni PDF oluşturma, PDF formlarını doldurma, PDF şifreleme/şifre açma, görüntü çıkarma ve taranmış PDF'lerde OCR uygulaması dahildir. Kullanıcı bir .pdf dosyasından bahsettiğinde veya
Bu skill'i .pptx dosyalarıyla çalışmanız gereken her durumda kullanın — giriş, çıkış veya her ikisi için de. Sunum oluşturma, slayt destesi hazırlama, metnini okuma ve çıkarma, düzenleme veya güncelleme, dosyaları birleştirme ve bölme gibi tüm işlemleri kapsar.
Artifaktları tema ile stilize etmek için toolkit. Slaytlar, dokümanlar, raporlar, HTML landing page'ler gibi çeşitli artifaktlara uygulanabilir. 10 hazır tema ile renkler ve fontları seçebilir ya da anında yeni tema oluşturabilirsiniz.