Communitygithub.com

David-Li0406/meta-skill-evolutive

Ensemble complet d'outils de manipulation PDF : extraction de texte et de tableaux, création de nouveaux PDF, fusion/séparation de documents et gestion de formulaires. Idéal pour remplir des formulaires PDF ou traiter, générer et analyser des documents PDF à grande échelle.

Qu'est-ce que meta-skill-evolutive ?

Cette compétence fournit un guide complet pour la manipulation de fichiers PDF en utilisant des bibliothèques Python (pypdf, pdfplumber, reportlab, pytesseract) et des outils en ligne de commande (pdftotext, qpdf, pdftk). Elle couvre les opérations essentielles comme la lecture, l'écriture, la fusion, la division, la rotation, l'extraction de texte et de tableaux, la création de PDF, l'OCR de documents scannés, l'ajout de filigranes, et la protection par mot de passe. Le guide est structuré avec des exemples de code prêts à l'emploi, des tableaux de référence rapide et des liens vers des fonctionnalités avancées (remplissage de formulaires, utilisation de JavaScript). La compétence est conçue pour être utilisée avec des agents comme Claude Code, Cursor ou Codex, et se base sur une documentation markdown claire et pratique, facilitant son intégration dans des workflows automatisés de traitement de documents.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/David-Li0406/meta-skill-evloving/tree/HEAD/AgentSkillOS/data/skill_seeds/pdf

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Guide de Traitement PDF

Vue d'Ensemble

Ce guide couvre les opérations essentielles de traitement PDF à l'aide de bibliothèques Python et d'outils en ligne de commande. Pour les fonctionnalités avancées, les bibliothèques JavaScript et des exemples détaillés, consultez reference.md. Si vous devez remplir un formulaire PDF, lisez forms.md et suivez ses instructions.

Démarrage Rapide

from pypdf import PdfReader, PdfWriter

# Lire un PDF
reader = PdfReader("document.pdf")
print(f"Pages : {len(reader.pages)}")

# Extraire du texte
text = ""
for page in reader.pages:
    text += page.extract_text()

Bibliothèques Python

pypdf - Opérations de Base

Fusionner des PDF

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)

Diviser un PDF

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)

Extraire des Métadonnées

reader = PdfReader("document.pdf")
meta = reader.metadata
print(f"Titre : {meta.title}")
print(f"Auteur : {meta.author}")
print(f"Sujet : {meta.subject}")
print(f"Créateur : {meta.creator}")

Faire Pivoter des Pages

reader = PdfReader("input.pdf")
writer = PdfWriter()

page = reader.pages[0]
page.rotate(90)  # Rotation de 90 degrés dans le sens horaire
writer.add_page(page)

with open("rotated.pdf", "wb") as output:
    writer.write(output)

pdfplumber - Extraction de Texte et de Tableaux

Extraire du Texte avec Mise en Page

import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

Extraire des Tableaux

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"Tableau {j+1} sur la page {i+1} :")
            for row in table:
                print(row)

Extraction Avancée de Tableaux

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:  # Vérifier que le tableau n'est pas vide
                df = pd.DataFrame(table[1:], columns=table[0])
                all_tables.append(df)

# Combiner tous les tableaux
if all_tables:
    combined_df = pd.concat(all_tables, ignore_index=True)
    combined_df.to_excel("extracted_tables.xlsx", index=False)

reportlab - Création de PDF

Création de PDF de Base

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter

# Ajouter du texte
c.drawString(100, height - 100, "Bonjour le monde !")
c.drawString(100, height - 120, "Ceci est un PDF créé avec reportlab")

# Ajouter une ligne
c.line(100, height - 140, 400, height - 140)

# Enregistrer
c.save()

Créer un PDF avec Plusieurs Pages

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 = []

# Ajouter du contenu
title = Paragraph("Titre du Rapport", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))

body = Paragraph("Ceci est le corps du rapport. " * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())

# Page 2
story.append(Paragraph("Page 2", styles['Heading1']))
story.append(Paragraph("Contenu de la page 2", styles['Normal']))

# Construire le PDF
doc.build(story)

Outils en Ligne de Commande

pdftotext (poppler-utils)

# Extraire du texte
pdftotext input.pdf output.txt

# Extraire du texte en conservant la mise en page
pdftotext -layout input.pdf output.txt

# Extraire des pages spécifiques
pdftotext -f 1 -l 5 input.pdf output.txt  # Pages 1 à 5

qpdf

# Fusionner des PDF
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

# Diviser les pages
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf

# Faire pivoter des pages
qpdf input.pdf output.pdf --rotate=+90:1  # Rotation de la page 1 de 90 degrés

# Supprimer le mot de passe
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf

pdftk (si disponible)

# Fusionner
pdftk file1.pdf file2.pdf cat output merged.pdf

# Diviser
pdftk input.pdf burst

# Faire pivoter
pdftk input.pdf rotate 1east output rotated.pdf

Tâches Courantes

Extraire du Texte de PDF Scannés

# Nécessite : pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path

# Convertir le PDF en images
images = convert_from_path('scanned.pdf')

# OCR sur chaque page
text = ""
for i, image in enumerate(images):
    text += f"Page {i+1} :\n"
    text += pytesseract.image_to_string(image)
    text += "\n\n"

print(text)

Ajouter un Filigrane

from pypdf import PdfReader, PdfWriter

# Créer un filigrane (ou en charger un existant)
watermark = PdfReader("watermark.pdf").pages[0]

# Appliquer à toutes les pages
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)

Extraire des Images

# En utilisant pdfimages (poppler-utils)
pdfimages -j input.pdf output_prefix

# Cela extrait toutes les images sous la forme output_prefix-000.jpg, output_prefix-001.jpg, etc.

Protection par Mot de Passe

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

# Ajouter un mot de passe
writer.encrypt("userpassword", "ownerpassword")

with open("encrypted.pdf", "wb") as output:
    writer.write(output)

Référence Rapide

TâcheMeilleur OutilCommande/Code
Fusionner des PDFpypdfwriter.add_page(page)
Diviser des PDFpypdfUne page par fichier
Extraire du textepdfplumberpage.extract_text()
Extraire des tableauxpdfplumberpage.extract_tables()
Créer des PDFreportlabCanvas ou Platypus
Fusion en ligne de commandeqpdfqpdf --empty --pages ...
OCR de PDF scannéspytesseractConvertir d'abord en image
Remplir des formulaires PDFpdf-lib ou pypdf (voir forms.md)Voir forms.md

Prochaines Étapes

  • Pour une utilisation avancée de pypdfium2, consultez reference.md
  • Pour les bibliothèques JavaScript (pdf-lib), consultez reference.md
  • Si vous devez remplir un formulaire PDF, suivez les instructions dans forms.md
  • Pour les guides de dépannage, consultez reference.md

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

David-Li0406/meta-skill-evloving

Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.

David-Li0406/meta-skill-evloving

Create technical diagrams using Mermaid syntax for architecture, sequences, ERDs, flowcharts, and state machines. Use for visualizing system design, data flows, and processes. Triggers: diagram, mermaid, architecture diagram, sequence diagram, flowchart, ERD, entity relationship, state diagram, C4 model, component diagram, visualize, draw.

David-Li0406/meta-skill-evloving

Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks

David-Li0406/meta-skill-evloving

Complete color manipulation and green screen effects system. PROACTIVELY activate for: (1) Green screen/chromakey removal, (2) Color grading with LUTs, (3) Color correction (levels, curves, white balance), (4) Colorkey/color removal effects, (5) Hue/saturation manipulation, (6) Color space conversions (BT.709, BT.2020, HDR), (7) Color isolation effects, (8) Teal and orange look, (9) Vintage/film looks, (10) Color keying for transparency. Provides: chromakey and colorkey filters, LUT application (lut3d), curves and levels adjustment, color balance, selective color manipulation, color space handling, HDR tone mapping, professional color grading chains.

David-Li0406/meta-skill-evloving

Convert files and office documents to Markdown. Supports PDF, DOCX, PPTX, XLSX, images (with OCR), audio (with transcription), HTML, CSV, JSON, XML, ZIP, YouTube URLs, EPubs and more.

David-Li0406/meta-skill-evloving

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

David-Li0406/meta-skill-evloving

Build with OpenAI's stateless APIs - Chat Completions (GPT-5, GPT-4o), Embeddings, Images (DALL-E 3), Audio (Whisper + TTS), and Moderation. Includes Node.js SDK and fetch-based approaches for Cloudflare Workers. Use when: implementing chat completions with GPT-5/GPT-4o, streaming responses with SSE, using function calling/tools, creating structured outputs with JSON schemas, generating embeddings for RAG (text-embedding-3-small/large), generating images with DALL-E 3, editing images with GPT-Image-1, transcribing audio with Whisper, synthesizing speech with TTS (11 voices), moderating content (11 safety categories), or troubleshooting rate limits (429), invalid API keys (401), function calling failures, streaming parse errors, embeddings dimension mismatches, or token limit exceeded.

David-Li0406/meta-skill-evloving

Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks

David-Li0406/meta-skill-evloving

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

David-Li0406/meta-skill-evloving

Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.

David-Li0406/meta-skill-evloving

Best practices for Remotion - Video creation in React

David-Li0406/meta-skill-evloving

Provides bidirectional translation (Chinese/English), grammar checking, and sentence polishing. Supports specific tense constraints, context-aware tone adjustment, and natural expression optimization. Outputs direct text without formatting.

David-Li0406/meta-skill-evloving

指导如何通过自定义注解(如@Unicom)标识Dubbo接口,利用BeanDefinitionRegistryPostProcessor在启动时扫描并动态注册ReferenceBean,实现RPC调用的封装。

David-Li0406/meta-skill-evloving

生成Python脚本,利用FFmpeg将图片序列按3x3布局合并,或将合并图拆分。要求使用subprocess模块执行命令,并支持用户交互式输入路径。

David-Li0406/meta-skill-evloving

SOP for extracting and analyzing promotional activity details, handling time formatting, location mapping, payment logic, and step-by-step process validation.

David-Li0406/meta-skill-evloving

Specializes in creating TikTok short video scripts using an anthropomorphic 'Chef' perspective to explain wildlife food chains and survival environments, utilizing real field footage.

David-Li0406/meta-skill-evloving

针对TikTok平台,以拟人化视角(如动物作为厨师)创作系列短视频脚本。重点介绍野生动物、食物链及生态环境,要求使用野外实拍素材,风格幽默且具有教育意义。

David-Li0406/meta-skill-evloving

Generates KWL (Know, Want to know, Learned) charts for educational videos, specifically BrainPOP, using simple 7th-grade language and short, concise bullet points.

David-Li0406/meta-skill-evloving

Develops DAX measures to calculate promo and regular volumes and generates a calculated table of dates excluding continuous promo date ranges, handling multiple periods and nulls.

David-Li0406/meta-skill-evloving

Tracks complex, multi-session work using the Beads issue tracker and dependency graphs, and provides persistent memory that survives conversation compaction. Use when work spans multiple sessions, has complex dependencies, or needs persistent context across compaction cycles. Trigger with phrases like "create task for", "what's ready to work on", "show task", "track this work", "what's blocking", or "update status".

Skills associés