Voici rakedoc-nano : le VLM à poids ouverts à la fine pointe pour l’analyse de documents
Split

Split découpe un fichier en plusieurs.

Une trousse arrive en un seul fichier. Elle ressort en fichiers distincts. Chaque pièce sait ce qu'elle est et de quelles pages elle vient.

Comment ça marche

Classify décide. Split découpe.

Nous gardons les deux séparés, exprès. L'un réfléchit, donc il peut se tromper. L'autre déplace des octets, donc il ne peut pas.

  1. 01

    Trouver où commence chaque document

    Classify lit la trousse page par page. Il marque la première page de chaque document. C'est plus important qu'il n'y paraît. Une facture suivie d'une autre facture est identique sur chaque page.

    POST /v1/classifygranularity: pagedocumentStart
  2. 02

    Lire le plan avant de le payer

    Mettez materialize à false. Vous recevez les plages de pages, sans fichiers. Rien n'est créé et rien n'est facturé. Lisez les plages. Déplacez une frontière, ou concluez que la trousse ne formait qu'un seul document.

    materialize: falseconfidence: 0-5
  3. 03

    Découper. Aucun modèle dans la pièce.

    Split n'exécute aucun modèle. Il copie des pages dans de nouveaux fichiers. C'est tout le travail. Chaque enfant garde les métadonnées du parent et renvoie au fichier d'origine. Appelez-le deux fois et vous obtenez toujours un seul jeu de fichiers.

    POST /v1/splitparentFileIdidempotency-key
  4. 04

    Passer les pièces à l'étape suivante

    Vous recevez une liste plate d'identifiants. Collez-la dans extract, redact ou sign. Le plafond de 100 segments correspond à la limite en aval. Une trousse tient donc toujours dans un seul appel.

    output.documentIds100 segments max.
Ce qu'il gère

Le désordre entre. L'adressable sort.

Numérisé, nativement numérique ou enregistré. Les frontières viennent des pages elles-mêmes, pas d'un nom de fichier que personne ne tient propre.

Trousses jusqu'à 750 pages
Un PDF par exécution. Jusqu'à 50 Mo, 750 pages et 100 pièces. Laissez des trous si vous voulez. Les pages que personne n'a demandées restent en arrière.
Numérisations, pas juste des couches de texte
Les pages nativement numériques sont lues directement. Les numérisations passent d'abord par la ROC. Dans les deux cas, la trousse est lue une seule fois. Vous ne payez jamais deux fois la même page.
La mise en page, pas les sauts de ligne
La lecture retourne des blocs avec une page et une position. Un tableau qui court sur deux pages reste un seul tableau. Il ne devient pas un nouveau document.
Enregistrements, par segment
L'audio est d'abord transcrit avec identification des locuteurs. La transcription revient en segments minutés. C'est là que se trouvent déjà les coupes naturelles.
Attendez, ou pas
Une petite trousse revient terminée. Une trousse de 300 pages revient avec une URL de statut. Rejouez la même clé d'idempotence et rien n'est découpé deux fois.
Facturé à la page découpée
Split est la moitié économique du duo, parce que le travail déterministe coûte peu. Apportez vos propres plages et vous évitez la classification. Aucun modèle ne s'exécute.
Parlons exactitude

Une mauvaise coupe est une mauvaise décision, pas un mauvais couteau.

C'est donc la décision qui porte le score, le seuil et l'endroit où une personne intervient.

  • Frontières
    Ce qu'on suppose Découper une trousse est un problème de modèle.
    Ce qui se passe Décider, oui. Découper, non. Classify prend tous les jugements. Split n'exécute aucun modèle, donc il n'a aucune opinion à se tromper.
  • Confiance
    Ce qu'on suppose On vous donne un pourcentage et un haussement d'épaules.
    Ce qui se passe Chaque page reçoit un score de 0 à 5. Un segment prend le plus bas qu'il contient. La seule page douteuse est précisément là où la frontière est fausse.
  • Révision
    Ce qu'on suppose On l'apprend en aval, dans un billet de soutien.
    Ce qui se passe Envoyez tout ce qui est à 3 ou moins à une personne, avant la coupe. L'espace entre classify et split est un vrai point d'arrêt, pas une pensée après coup.
  • Réglage
    Ce qu'on suppose Rassembler des exemples. Réentraîner. Attendre deux semaines.
    Ce qui se passe Il n'y a aucun jeu d'entraînement à rassembler. Vous réglez avec une phrase. Décrivez mieux la classe, relancez la page et voyez le changement tout de suite.
Formes de trousses

Les fichiers que personne ne veut ouvrir.

Chacun arrive en un seul téléversement. Chacun contient une demi-douzaine de documents qui appartiennent à des personnes différentes.

Lots de factures fournisseurs
Un mois de factures, numérisées d'un seul coup. Chaque page est de la même classe. Le seul indice, c'est où un total finit et où l'en-tête suivant commence.
Dossiers de réclamation
Rapport de sinistre, estimation, photos, rapport de police, lettres. Un seul numéro de réclamation, et cinq personnes qui ont chacune besoin d'une partie.
Formulaires d'admission
Consentement, antécédents, carte d'assurance, lettre de référence. Télécopiés en un seul long fichier, parce qu'un télécopieur n'a jamais entendu parler de fichiers.
Ensembles contractuels
Entente-cadre, annexes, bon de commande, pages de signature. Votre équipe lit les annexes. Personne n'aime défiler pour les trouver.
Dossiers de prêt et d'hypothèque
Talons de paie, formulaires fiscaux, relevés, évaluation, pièce d'identité. Agrafés en un seul PDF par un emprunteur qui faisait de son mieux.
Appels enregistrés
Une heure avec un réclamant couvre la réception, le sinistre, la couverture et les prochaines étapes. Quatre sujets, quatre responsables, un seul enregistrement.
Dossiers d'expédition et de douane
Facture commerciale, liste de colisage, connaissement, certificat d'origine. Quatre documents dans un seul PDF, et trois systèmes qui en veulent chacun un différent.
Lots de relevés de fin de mois
Douze mois de relevés, téléchargés en un seul fichier. La même mise en page sur chaque page. Un nouveau mois commence là où le dernier solde finit.
Actes de procédure avec pièces
La requête, l'affidavit et trente pièces, déposés en une seule numérisation. Chaque pièce a besoin de son propre numéro et de sa propre plage de pages.
Pour les ingénieurs dans la salle

Split est ennuyant. C'est la fonctionnalité.

Aucun modèle ne s'exécute dans la coupe. Même trousse, mêmes plages, mêmes fichiers, chaque fois. Vous pouvez la reprendre, la mettre en cache et la comprendre à 2 h du matin. Quand une coupe semble fausse, elle a échoué un appel plus tôt, dans classify. Et classify vous donne un score et un numéro de page pour le prouver.

La partie intéressante se trouve dans cet appel plus tôt. C'est là que vit le score, là qu'une personne peut intervenir, et là qu'une meilleure phrase change le résultat. Nous préférons garder les suppositions au même endroit plutôt que de les répandre sur deux.

Trois façons d'entrer

La même coupe. Pas le même métier.

Les trois chemins diffèrent sur qui détient les plages de pages. Ce qui en sort est identique.

Pour les développeurs
Deux appels et un essai à blanc gratuit. Passez une exécution de classification et laissez-nous trouver les frontières, ou passez vos propres plages quand votre système les connaît déjà. Ce deuxième chemin n'exécute aucun modèle et ne facture aucune classification. SDK Python et TypeScript, avec des exemples à coller.
Voir l'API
Pour les équipes
Personne ne devrait cliquer sur un bouton pour diviser. Split s'exécute comme une étape dans une automatisation. La trousse arrive, les pièces se déposent dans le bon espace, et la file que votre équipe ouvre compte déjà un document par ligne.
Voir l'espace de travail
Pour les agents
Une seule connexion MCP donne à un agent toute l'API. Il peut classer, lire les plages, conclure que la trousse ne formait qu'un document, et découper seulement ensuite. Le jugement d'abord, les octets ensuite.
Voir les agents
Montrez-moi le code

Deux appels pour découper. Un pour utiliser les pièces.

Classez les pages, puis découpez sur les frontières. C'est toute la capacité. Le troisième appel ci-dessous est extract, parce que chaque pièce est maintenant son propre fichier. Regardez les plages entre les deux premiers appels.

import { CloudRakerClient } from "@cloudraker/api";

const client = new CloudRakerClient({ token: "YOUR_API_KEY" });
const packet = { url: "https://example.com/intake-packet.pdf" };

// 1 - Find where each document starts, page by page
const classified = await client.classify({
  body: {
    file: packet,
    granularity: "page",
    classes: [
      { id: "invoice", description: "A vendor invoice with a total due." },
      { id: "w9", description: "An IRS Form W-9." },
      { id: "agreement", description: "A signed services agreement." },
    ],
  },
});

// 2 - Cut the packet on those boundaries (no model runs here)
const run = await client.split({
  body: { file: packet, classifyRunId: classified.id },
});

for (const piece of run.output.splits) {
  console.log(piece.classId, piece.startPage, piece.endPage, piece.confidence);
}

// 3 - Every child is addressable on its own
const data = await client.extract({
  body: {
    files: run.output.documentIds.map((id) => ({ id })),
    schema: {
      type: "object",
      properties: { total_due: { type: ["number", "null"] } },
    },
    citations: true,
  },
});
console.log(data.output?.value);
from cloudraker.client import CloudRaker

client = CloudRaker(token="YOUR_API_KEY")
packet = {"url": "https://example.com/intake-packet.pdf"}

# 1 - Find where each document starts, page by page
classified = client.classify(
    file=packet,
    granularity="page",
    classes=[
        {"id": "invoice", "description": "A vendor invoice with a total due."},
        {"id": "w9", "description": "An IRS Form W-9."},
        {"id": "agreement", "description": "A signed services agreement."},
    ],
)

# 2 - Cut the packet on those boundaries (no model runs here)
run = client.split(file=packet, classify_run_id=classified.id)

for piece in run.output.splits:
    print(piece.class_id, piece.start_page, piece.end_page, piece.confidence)

# 3 - Every child is addressable on its own
data = client.extract(
    files=[{"id": file_id} for file_id in run.output.document_ids],
    schema={
        "type": "object",
        "properties": {"total_due": {"type": ["number", "null"]}},
    },
    citations=True,
)
print(data.output.value)
Où aller ensuite

Split est l'une de plusieurs.

La même fondation sous chacune. Choisissez la porte qui vous convient.

Automatisation
Placez Split dans un flux avec déclencheurs, règles et approbations. La trousse est découpée avant que quiconque ait à l'ouvrir.
Voir l'automatisation
Commencer

Essayez à blanc. Regarder est gratuit.

Pointez Split vers une trousse sans matérialisation. Lisez les plages proposées. Si elles semblent bonnes, découpez. Sinon, précisez une phrase et relancez.