Voici RakeSign: la signature de documents gratuite et illimitée

Information extraite, un seul dossier de bail.

Le bail, le résumé et la fiche descriptive décrivent le même immeuble, et ils ne concordent pas toujours. Envoyez-les ensemble, recevez un seul dossier cité, et voyez exactement quel document a gagné chaque champ contesté.

Le problème

Un immeuble. Quatre versions de la vérité.

Un bail commercial n'est jamais un seul document. Il y a le bail signé, un résumé rédigé il y a deux ans, une fiche descriptive de courtier et un tableur tenu par le gestionnaire d'actifs. Chacun indique le loyer. Ils n'indiquent pas tous le même loyer.

Alors quelqu'un ouvre les quatre, repère les écarts, décide quoi croire et saisit la réponse dans un système. Cette personne est souvent la seule trace du pourquoi. Quand elle part, le raisonnement part avec elle.

Le rapprochement, c'est le travail. Lire les documents n'est que le chemin pour y arriver.

Le flux de travail

Extraire chaque document. Fusionner ensuite.

L'ordre compte, et c'est pourquoi le résultat est prévisible. Chaque document est lu séparément, puis les résultats sont fusionnés selon des règles.

EntréeBail, résumé, fiche descriptivePDF, Word, Excel ou une numérisation.
  1. Parse

    Lire chaque fichier une fois, quel qu'il soit. Un bail numérisé et un tableur arrivent en aval sous la même forme.

    POST /v1/files
  2. Extract

    Chaque document est extrait séparément, selon votre schéma, avec une citation pour chaque champ rempli.

    POST /v1/extractcitations: true
  3. Fusionner

    Les résultats par document se réduisent en un seul dossier selon des règles documentées. Aucun modèle ne décide de cette partie, et c'est pourquoi elle ne surprend jamais deux fois.

    unit: across_documents
  4. Réviser

    Chaque champ contesté est listé avec ce que chaque document disait et lequel a gagné. Vos propres vérifications s'exécutent ici aussi.

    judge: truecitations[].confidence
  5. Envoyer

    Un dossier, plus ce que chaque document disait séparément, vers le système qui suit le portefeuille.

    outputcitations[].fileId
SortieUn dossier citéChaque champ traçable à un fichier, une page et un cadre sur cette page.
Quand ils divergent

La fusion garde une seule réponse. Et elle montre son travail.

Trois documents, trois champs contestés, trois règles différentes pour les trancher. Rien n'est moyenné, rien n'est mélangé — une valeur est prise entière, avec sa citation, dans un seul document.

  1. 01lease.pdfenvoyé en premier
  2. 02lease-abstract.docx
  3. 03fact-sheet.xlsx

Loyer mensuel

monthly_rent
lease.pdf$12,400citéretenu
lease-abstract.docx$12,000non cité
fact-sheet.xlsx$12,400non cité

Règle appliquéeUne valeur citée l'emporte sur une valeur non citée. Le bail a désigné la clause d'où elle vient; les deux autres n'ont fait qu'affirmer un montant.

Superficie locative

rentable_sqft
lease.pdfabsentabsent
lease-abstract.docx4,820citéretenu
fact-sheet.xlsx4,800non cité

Règle appliquéeToute valeur réelle l'emporte sur un champ vide. Le bail n'indique jamais la superficie : il n'avait rien à fournir et on ne lui a pas demandé de deviner.

Durée en mois

term_months
lease.pdf60citéretenu
lease-abstract.docx60cité
fact-sheet.xlsxabsentabsent

Règle appliquéeLes deux citaient le chiffre aussi clairement, donc l'égalité est allée au fichier envoyé en premier. L'ordre de téléversement a tranché celui-ci.

Cette dernière règle mérite qu'on s'y arrête. Inversez les deux fichiers dans la requête et le gagnant change — c'est un comportement mesuré, pas une supposition. Et aucune formulation dans vos instructions n'y changera rien, parce que les instructions façonnent l'extraction et que la fusion vient après. Désactivez l'ancrage et chaque comparaison devient une égalité, ce qui fait gagner le premier fichier partout.

La démo

Voyez la fusion choisir un gagnant.

Quatre façons de lancer la même extraction, la fusion se comportant exactement comme documenté, et la révision listant chaque champ disputé par les documents.

L'exemple demande deux documents exprès. Un seul document ne laisse rien à contester.Ouvrir dans un nouvel onglet
Quatre façons de faire

Le même dossier, quatre façons de le demander.

La forme peut venir de votre code, d'une action enregistrée ou d'une phrase en prose. À choisir par appel.

Un schéma en ligne
Votre JSON Schema dans la requête. Contrôle total, un dossier par document, champs nullables pour qu'une clause absente signale son absence au lieu d'une supposition.
TypeScript
await sdk.extract({
  file: {id: leaseId},
  citations: true,
  schema: leaseSchema,
})
Une action enregistrée
Enregistrez le schéma une fois sous un nom, référencez-le par son identifiant pour toujours. Vous pouvez toujours demander des citations par exécution même si l'action a été enregistrée sans elles.
TypeScript
await sdk.extract({
  files: [lease, abstract],
  unit: 'across_documents',
  action: 'lease-abstract',
  citations: true,
})
Une phrase d'indices
Aucun schéma. Décrivez ce que vous voulez et la forme est déduite, puis rapportée sur l'exécution. Pour découvrir ce que contient un document — pas pour la production, car les noms de champs peuvent changer d'une exécution à l'autre.
TypeScript
await sdk.extract({
  file: {id: leaseId},
  citations: true,
  hints: 'Commercial lease: rent, term, dates, renewal.',
})
Comment la fusion se comporte

Déterministe vaut mieux que malin.

Ce qu'on attend d'une fusion de documents est souvent faux, et faux d'une manière qui coûte un après-midi. Voici ce qui se passe vraiment.

  • Qui choisit
    Ce qu'on suppose Le modèle lit tous les documents et choisit la valeur qu'il préfère.
    Ce qui se passe Chaque document est extrait séparément. La fusion qui suit est du code ordinaire appliquant des règles documentées : les mêmes fichiers dans le même ordre donnent le même dossier à chaque fois.
  • En cas de désaccord
    Ce qu'on suppose Deux loyers sont rapprochés en une valeur intermédiaire, ou le document le plus récent gagne.
    Ce qui se passe Les valeurs ne sont jamais mélangées. Une valeur est prise entière, avec sa citation, dans un seul document — le mieux ancré, ou le premier de la requête en cas d'égalité.
  • Pour les champs de liste
    Ce qu'on suppose Chaque document ajoute ses lignes et on obtient l'union.
    Ce qui se passe Les tableaux ne sont pas unis. Une liste d'options ou de charges vient d'un seul document, pas de tous cousus ensemble. Si vous voulez l'union, faites-la en aval, là où vous la voyez se produire.
  • L'orienter
    Ce qu'on suppose Une instruction plus ferme le fera préférer le bail signé.
    Ce qui se passe Non. Les instructions façonnent l'extraction; la fusion vient après. Pour décider quel document gagne, décidez de l'ordre d'envoi.
Ancrage

Chaque valeur pointe vers sa source.

Une citation n'est pas une note de bas de page. Elle porte le fichier, la page et le cadre sur cette page, donc une valeur douteuse se vérifie en un clic, pas en un après-midi avec un PDF.

lease.pdf1à revoirCliquez un champ pour le voir dans le document.
Page 4 sur 45
Bail commercial — 1300, rue Sherbrooke Ouest

Article 2 — Durée et renouvellement

2.2Le locataire dispose d'une option de renouvellement de cinq (5) ans, sur préavis écrit d'au moins neuf (9) mois.
2
Bail commercial — 1300, rue Sherbrooke Ouest

Article 4 — Loyer

4

Champs extraits

TypeScript
const run = await sdk.extract({
  files: [lease, abstract, factSheet],
  unit: 'across_documents',
  citations: true,
  judge: true,          // re-score each value against the passage it cites
  schema: leaseSchema,
})

// A citation names the file, the page, and the box on that page. That is
// what the panel opposite is drawing, and what makes a value checkable.
for (const [field, cited] of Object.entries(run.output.citations)) {
  for (const c of cited) {
    console.log(field, c.fileId, c.page, c.bbox, c.confidence)
  }
}

// Confident values carry on. The rest go to a person — and the citation
// is the first thing they open.
const needsReview = Object.entries(run.output.citations)
  .filter(([, cited]) => cited.some((c) => c.confidence <= REVIEW_THRESHOLD))
  .map(([field]) => field)
Pour les ingénieurs dans la salle

Un appel, peu importe le nombre de documents.

Trois étapes et une décision. La fusion est un champ de la requête, pas un pipeline à assembler.

  1. 01

    Enregistrer les documents, dans l'ordre

    Un enregistrement de fichier par document, puis envoyez les octets à chaque URL de téléversement. Choisissez l'ordre volontairement — l'ordre de la requête tranche les égalités dans la fusion, donc le document le plus fiable passe en premier.

    POST /v1/filesGET /v1/files/:id
  2. 02

    Demander un dossier plutôt que plusieurs

    Envoyez un tableau de fichiers plutôt qu'un seul, mettez unit à across_documents et laissez les citations activées. L'ancrage permet à la fusion de classer deux valeurs concurrentes au lieu de se rabattre sur l'ordre seul.

    POST /v1/extractunit: across_documentscitations: true
  3. 03

    Ajouter le second avis

    Mettez judge à true et une seconde passe réévalue chaque valeur selon le passage qu'elle cite. Il lui faut les citations activées pour avoir quelque chose à lire. Les scores bas forment votre file pour une personne, pas une raison de jeter la valeur.

    judge: truecitations[].confidence
  4. 04

    Lire le dossier et les reçus

    Vous recevez le dossier fusionné, et chaque citation porte l'identifiant du fichier d'origine — c'est ce qui rend la fusion vérifiable et pas seulement commode. Gardez l'exécution et elle devient un dossier permanent au lieu d'expirer avec sa durée de vie par défaut.

    citations[].fileIdcitations[].pagePOST /v1/runs/:id/keep
Après le dossier

Un résumé n'est pas la fin du travail.

Une fois les clauses structurées, les documents qui les citent peuvent être produits plutôt que saisis.

Rédiger le résumé
Le résumé qui contredisait le bail a été saisi à la main. Générez le prochain à partir du dossier et il ne pourra plus dériver.
Voir Compose
Remplir l'attestation
Attestations d'estoppel, conventions de subordination, questionnaires de locataire. Les cases demandées sont les champs déjà extraits.
Voir Fill
Caviarder avant la circulation
Les baux contiennent des loyers et des noms qu'un prêteur ou un courtier n'a pas à lire. Retirez-les définitivement, pas avec un rectangle noir.
Voir Redact
Envoyer pour signature
L'avenant généré doit être signé. Même exécution, aucun nouveau fournisseur.
Voir Sign
Découper la trousse d'abord
Parfois les quatre documents arrivent en un seul PDF numérisé. Classify trouve les frontières et Split en fait des fichiers adressables.
Voir Split
Le faire sur tout le portefeuille
Un bail à la fois, c'est une démo. Le lot, c'est comment mille baux deviennent un jeu de données — enregistrez d'abord le schéma comme action, car le lot n'accepte pas les indices.
Lancez-le vous-même

Cette page est un programme que vous pouvez cloner.

Tout ce qui précède existe en exemple TypeScript exécutable sous licence MIT, documents d'exemple inclus. Bun install, ajoutez une clé d'API, lancez. Les quatre façons d'appeler l'extraction sont sélectionnables dans l'interface, et l'écran de révision est celui de la vidéo.

L'expérience intéressante prend dix secondes : inversez les deux documents dans la liste et regardez le champ à égalité changer de réponse. C'est tout l'argument des règles déterministes face à un modèle qui choisit discrètement son favori.

github.com/CloudRaker/cloudraker-api-examples-typescript — le dossier rental-lease-extraction.

Capacités utilisées

Les briques sous ce cas d'usage.

Une capacité et trois de ses réglages portent tout ce flux.

Parse
PDF, Word, Excel ou une numérisation de l'un d'eux. Chaque fichier est lu une fois et partagé par toutes les étapes suivantes.
Documentation Parse
Extract
Votre JSON Schema, une action enregistrée ou une phrase d'indices. Les champs nullables laissent une clause manquante signaler son absence plutôt qu'une supposition.
Documentation Extract
Ancrage
Chaque champ rempli porte une citation avec le fichier, la page et le cadre sur cette page. C'est aussi ce qui permet à la fusion de classer deux réponses concurrentes.
Documentation citations
Judge
Une seconde passe qui réévalue chaque valeur selon le passage qu'elle cite. Nécessite l'ancrage. Les valeurs sûres continuent; les autres vont à une personne, et vous fixez où passe la limite.
Documentation confiance
Commencez ici

Vos documents se contredisent déjà. Vous pouvez maintenant voir où.

Prenez deux baux qui vous font déjà débattre, envoyez-les en un seul appel et lisez la liste des désaccords. Dix minutes, et vous saurez si ça a sa place dans votre pile.