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.
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.
- 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.
- 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.
- 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.
- 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.
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.
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èresCe 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.
- ConfianceCe 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évisionCe 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églageCe 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.
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.
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.
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.
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)Split est l'une de plusieurs.
La même fondation sous chacune. Choisissez la porte qui vous convient.
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.