Convertisseur de Documents Datalab

VérifiéPrudence

Convertit des documents (PDF, EPUB, PPTX, DOCX, XLSX, HTML, images) en Markdown via l'API cloud Datalab. Utilise le SDK Python synchrone ou asynchrone, l'API REST ou curl. Utile pour une conversion cloud avec des options telles que l'OCR, l'amélioration par LLM et la sélection de plages de pages.

Spar Skills Guide Bot
Data & IAIntermédiaire
02/06/2026
Claude Code
#document-conversion#pdf-to-markdown#datalab-api#cloud-ocr

Recommandé pour

Synthèse automatique

Ce skill permet de convertir des documents (PDF, EPUB, PPTX, DOCX, XLSX, HTML, images) en Markdown via l'API cloud Datalab.

Points forts

  • Prend en charge de nombreux formats de documents
  • Offre un SDK Python et une API REST pour une intégration flexible
  • Permet des options avancées comme l'OCR forcé, la pagination, et l'utilisation d'un LLM
  • Gère les conversions asynchrones pour de meilleures performances

Limites

  • Nécessite une clé API Datalab et une connexion Internet
  • Les conversions volumineuses peuvent prendre du temps
  • La précision du LLM peut varier selon la qualité du document source
Quand l'utiliser

Utilisez ce skill lorsque vous devez convertir des documents complexes en Markdown avec une haute fidélité, notamment pour l'archivage ou le traitement de contenu.

Quand l'éviter

Évitez ce skill si vous travaillez hors ligne ou si vous convertissez un petit nombre de documents simples qu'un outil local peut gérer efficacement.

Analyse de sécurité

Prudence
Score qualité90/100

The skill provides instructions for using a cloud API with network calls (curl, Python requests) and handling API keys. These are legitimate operations but introduce potential risks of data exfiltration if used with sensitive documents. The skill itself does not contain obfuscated or destructive commands, but the network activity warrants caution.

Points d'attention
  • •Involves sending files to a third-party cloud API, which could expose sensitive data if not properly managed.
  • •Requires setting an API key via environment variable, which if misconfigured could lead to unauthorized access.
Comment cette analyse est faite

Exemples

Convert PDF to Markdown
I have a PDF file called report.pdf. Convert it to Markdown using the Datalab API.
Convert with OCR and LLM
Convert the scanned document scan.pdf to Markdown. Force OCR and use LLM for better accuracy.
Async conversion of multiple files
Convert all PDFs in the 'docs' folder to Markdown asynchronously using Datalab. Save outputs to './output'. Use pagination.

name: datalab description: Convert documents (PDF, EPUB, PPTX, DOCX, XLSX, HTML, images) to Markdown using Datalab cloud API. Use when user wants to use Datalab API for document conversion, or prefers cloud-based processing over local marker CLI.

Datalab Document Converter

Convert PDF, EPUB, PPTX, DOCX, XLSX, HTML, and image files to Markdown using the Datalab cloud API.

Prerequisites

# Install Datalab Python SDK
uv pip install datalab-python-sdk

# Set API key (get from https://www.datalab.to)
export DATALAB_API_KEY="your_api_key_here"

Python SDK Usage

Basic Conversion

from datalab_sdk import DatalabClient

client = DatalabClient()  # Uses DATALAB_API_KEY env var

# Convert document to markdown
result = client.convert("document.pdf")
print(result.markdown)

# Save output
result = client.convert(
    "document.pdf",
    save_output="./output/document"
)
# Creates: output/document.md, output/document_meta.json, output/*.png

With Options

from datalab_sdk import DatalabClient, ConvertOptions

client = DatalabClient()

options = ConvertOptions(
    output_format="markdown",  # markdown, json, html, chunks
    force_ocr=False,           # Force OCR on all pages
    paginate=True,             # Add page separators
    use_llm=True,              # Use LLM for better accuracy
    disable_image_extraction=True,  # Plain text only
    page_range="0,5-10,20"     # Specific pages
)

result = client.convert("document.pdf", options=options)

Async Client (Better Performance)

import asyncio
from datalab_sdk import AsyncDatalabClient, ConvertOptions

async def convert_document():
    async with AsyncDatalabClient() as client:
        result = await client.convert(
            "document.pdf",
            options=ConvertOptions(output_format="markdown")
        )
        return result.markdown

markdown = asyncio.run(convert_document())
print(markdown)

OCR Only

from datalab_sdk import DatalabClient

client = DatalabClient()

# OCR a document
ocr_result = client.ocr("document.pdf")
print(ocr_result.pages)  # Get all text

REST API Usage

Submit Document for Conversion

import requests

url = "https://www.datalab.to/api/v1/marker"
headers = {"X-API-Key": "YOUR_API_KEY"}

with open("document.pdf", "rb") as f:
    files = {"file": ("document.pdf", f, "application/pdf")}
    data = {
        "output_format": (None, "markdown"),
        "force_ocr": (None, "false"),
        "use_llm": (None, "false"),
        "disable_image_extraction": (None, "true")
    }
    response = requests.post(url, headers=headers, files=files, data=data)

result = response.json()
print(f"Request ID: {result['request_id']}")
print(f"Check URL: {result['request_check_url']}")

Poll for Results

import requests
import time

check_url = result['request_check_url']
headers = {"X-API-Key": "YOUR_API_KEY"}

while True:
    response = requests.get(check_url, headers=headers)
    status = response.json()

    if status.get('status') == 'complete':
        print(status['markdown'])
        break
    elif status.get('status') == 'failed':
        print(f"Error: {status.get('error')}")
        break

    time.sleep(2)  # Poll every 2 seconds

Using curl

# Submit document
curl -X POST "https://www.datalab.to/api/v1/marker" \
  -H "X-API-Key: $DATALAB_API_KEY" \
  -F "file=@document.pdf" \
  -F "output_format=markdown" \
  -F "disable_image_extraction=true"

# Check status
curl "https://www.datalab.to/api/v1/marker/{request_id}" \
  -H "X-API-Key: $DATALAB_API_KEY"

API Options

| Parameter | Type | Description | | -------------------------- | ------- | ------------------------------------ | | output_format | string | markdown, json, html, chunks | | force_ocr | boolean | Force OCR on all pages | | paginate | boolean | Add page separators | | use_llm | boolean | Use LLM for better accuracy | | strip_existing_ocr | boolean | Remove existing OCR and re-process | | disable_image_extraction | boolean | Plain text only | | page_range | string | Specific pages, e.g., "0,5-10,20" | | max_pages | integer | Maximum pages to convert |

Batch Processing

import asyncio
from pathlib import Path
from datalab_sdk import AsyncDatalabClient, ConvertOptions

async def batch_convert(files: list[Path], output_dir: Path):
    output_dir.mkdir(parents=True, exist_ok=True)

    options = ConvertOptions(
        output_format="markdown",
        disable_image_extraction=True
    )

    async with AsyncDatalabClient() as client:
        tasks = [
            client.convert(
                file_path=f,
                options=options,
                save_output=output_dir / f.stem
            )
            for f in files
        ]
        results = await asyncio.gather(*tasks, return_exceptions=True)

    for f, result in zip(files, results):
        if isinstance(result, Exception):
            print(f"✗ {f.name}: {result}")
        elif result.success:
            print(f"✓ {f.name}: {result.page_count} pages")
        else:
            print(f"✗ {f.name}: {result.error}")

# Usage
files = list(Path("documents").glob("*.pdf"))
asyncio.run(batch_convert(files, Path("output")))

Error Handling

from datalab_sdk import (
    DatalabClient,
    DatalabAPIError,
    DatalabTimeoutError,
    DatalabFileError
)

client = DatalabClient()

try:
    result = client.convert("document.pdf", max_polls=60, poll_interval=2)

    if result.success:
        print(result.markdown)
    else:
        print(f"Conversion failed: {result.error}")

except DatalabAPIError as e:
    if e.status_code == 401:
        print("Authentication failed - check API key")
    elif e.status_code == 429:
        print("Rate limit exceeded - wait before retrying")
    else:
        print(f"API Error: {e}")

except DatalabTimeoutError:
    print("Operation timed out - try increasing max_polls")

except DatalabFileError as e:
    print(f"File error: {e}")

Datalab vs Marker CLI

| Feature | Datalab API | Marker CLI | | ------------ | ------------------ | ------------------- | | Processing | Cloud-based | Local | | GPU Required | No | Yes (recommended) | | Setup | API key only | Python + PyTorch | | Speed | Fast (cloud GPU) | Depends on hardware | | Privacy | Data sent to cloud | Local processing | | Cost | API credits | Free |

Instructions

  1. Confirm the input file path exists

  2. Check if $DATALAB_API_KEY environment variable is set

  3. Use AskUserQuestion tool to ask user preferences:

    Question 1 - Processing Method:

    • Header: "Method"
    • Question: "使用哪种方式调用 Datalab API?"
    • Options:
      • "Python SDK (Recommended)": 使用 datalab-python-sdk,更简洁
      • "REST API": 使用 requests 直接调用 API
      • "curl": 使用命令行 curl

    Question 2 - Image Extraction:

    • Header: "Images"
    • Question: "是否需要提取文档中的图片?"
    • Options:
      • "No (Recommended)": 仅提取文本,生成纯 Markdown
      • "Yes": 提取图片并保存
  4. Generate and run the appropriate code based on user's choice

  5. Report the output file location and any extraction notes

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/datalab-document-converter-mmio71q9/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/datalab-document-converter-mmio71q9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/datalab-document-converter-mmio71q9/download' --output '.skill-downloads/datalab-document-converter-mmio71q9/SKILL.md.part' && mv '.skill-downloads/datalab-document-converter-mmio71q9/SKILL.md.part' '.skill-downloads/datalab-document-converter-mmio71q9/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Extrait original : Prerequisites
# Install Datalab Python SDK
uv pip install datalab-python-sdk

# Set API key (get from https://www.datalab.to)
export DATALAB_API_KEY="your_api_key_here"

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/datalab-document-converter-mmio71q9/SKILL.md' && test -s '.skill-downloads/datalab-document-converter-mmio71q9/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/datalab' && cp -R '.skill-downloads/datalab-document-converter-mmio71q9' '.claude/skills/datalab'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/datalab-document-converter-mmio71q9'

openskills read 'datalab-document-converter-mmio71q9'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/datalab-document-converter-mmio71q9/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires