Aller au contenu

Scanner de cartes de visite

AI generated translation.

Ce guide montre comment utiliser la vision et les variables d’image pour scanner les informations des cartes de visite dans un format structuré.

Vous aurez besoin d’un accès à un déploiement du modèle de vision d’OpenAI. Dans cet exemple, il est identifié par gpt-4o. Réglez également le maxTokens à 4000 pour vous assurer que le modèle peut traiter l’intégralité de la carte de visite.

script({
...
model: "openai:gpt-4o",
maxTokens: 4000,
})

La fonction defImage peut être utilisée pour entrer plusieurs fichiers dans le script. Les fichiers non-image seront automatiquement ignorés, vous pouvez donc généralement passer env.files directement à defImages.

defImages(env.files)

Dans son ensemble, le script ressemble à ceci :

scan-business-card.genai.mjs
script({
description: "Given an image of business card, extract the details to a csv file",
group: "vision",
model: "vision",
maxTokens: 4000,
})
defImages(env.files)
const outputName = path.join(path.dirname(env.files[0].filename), "card.csv")
$`You are a helpful assistant. You are given an image of a business
card. Extract the following information in ${outputName}:
Name, Address, Phone, Email, Company, Title, Website, Category of Business
If you can't infer the category, mark it as "Unknown"`

Nous pouvons ajouter une validation du format des données en ajoutant un schéma pour les lignes de données d’entreprise.

const schema = defSchema("EXPENSE", {
type: "array",
items: {
type: "object",
properties: {
Date: { type: "string" },
Location: { type: "string" },
Total: { type: "number" },
Tax: { type: "number" },
Item: { type: "string" },
ExpenseCategory: { type: "string" },
Quantity: { type: "number" },
},
required: ["Date", "Location", "Total", "Tax", "Item", "Quantity"],
},
})

Et le script ci-dessus est adapté pour utiliser le schéma au lieu de la description CSV.

scan-business-card.genai.mjs
script({
description:
"Given an image of a receipt, extract a csv of the receipt data",
group: "vision",
model: "vision",
maxTokens: 4000,
})
defImages(env.files)
const schema = defSchema("EXPENSE", {
type: "array",
items: {
type: "object",
properties: {
Date: { type: "string" },
Location: { type: "string" },
Total: { type: "number" },
Tax: { type: "number" },
Item: { type: "string" },
ExpenseCategory: { type: "string" },
Quantity: { type: "number" },
},
required: ["Date", "Location", "Total", "Tax", "Item", "Quantity"],
},
})
const outputName = path.join(path.dirname(env.files[0].filename), "items.csv")
$`You are a helpful assistant that is an expert in filing expense reports.
You have information from a receipt in RECEIPT and you need to put the data
in ${outputName} using the ${schema} schema.`