Guida rapida
Copia un prompt di setup con i passaggi di installazione e la guida markdown completa per questo plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-document-scanner`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/document-scanner/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installazione
Sezione intitolata “Install”Puoi usare il nostro Setup assistito dall'AI per installare il plugin. Aggiungi le skill Capgo al tuo tool AI con il comando seguente:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi usa questo prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-document-scanner` plugin in my project.Se preferisci il Setup manuale, installa il plugin eseguendo i comandi seguenti e segui le istruzioni specifiche per piattaforma qui sotto:
bun add @capgo/capacitor-document-scannerbunx cap syncImporta
Sezione intitolata “Import”import { DocumentScanner } from '@capgo/capacitor-document-scanner';Avvio rapido
Sezione intitolata “Avvio rapido”import { DocumentScanner, ResponseType } from '@capgo/capacitor-document-scanner';
const result = await DocumentScanner.scanDocument({ maxNumDocuments: 1, responseType: ResponseType.ImageFilePath,});
if (result.status === 'success' && result.scannedImages?.length) { await uploadReceipt(result.scannedImages[0]);}Esempio: pacchetto multi-pagina
Sezione intitolata “Esempio: pacchetto multi-pagina”const result = await DocumentScanner.scanDocument({ maxNumDocuments: 12, letUserAdjustCrop: true, reviewCapturedDocument: true,});Gli scanner nativi supportano fino a 24 pagine per sessione.
Esempio: ottimizzazione cleanup Android
Sezione intitolata “Esempio: ottimizzazione cleanup Android”import { ScannerMode } from '@capgo/capacitor-document-scanner';
await DocumentScanner.scanDocument({ scannerMode: ScannerMode.Full, brightness: 0.1, contrast: 1.2,});scannerMode e le opzioni di pulizia ML sono disponibili solo su Android. Vedi le opzioni del plugin in scanDocument per l'elenco completo.
Errori comuni
Sezione intitolata “Errori comuni”- Web: pianifica un fallback (file picker o foto manuale) poiché la scansione è solo nativa.
- User cancel:
statuse può esserecancelsenza immagini; gestiscilo come qualsiasi altra chiusura. - Tipo di output: scegli
imageFilePatho base64 tramiteresponseTypeprima di configurare gli upload.
API Panoramica
Sezione intitolata “Panoramica API”scanDocument
Sezione intitolata “scanDocument”Apre la fotocamera del dispositivo e avvia l'esperienza di scansione del documento.
import { DocumentScanner } from '@capgo/capacitor-document-scanner';
const result = await DocumentScanner.scanDocument();console.log(result);Riferimento ai tipi
Sezione intitolata “Riferimento ai tipi”ScanDocumentOptions
Sezione intitolata “ScanDocumentOptions”export interface ScanDocumentOptions { /** * Android only: quality of the cropped image from 0 - 100 (100 is best). * @default 100 */ croppedImageQuality?: number;
/** * Allow the user to adjust the detected crop before saving. * On iOS this forces the native VisionKit preview/editor after each capture using * the private VisionKit navigation hooks needed to keep the scanner flow alive. * On Android this enables ML Kit's crop adjustment flow. * @default true */ letUserAdjustCrop?: boolean;
/** * When enabled, shows the current scanned page before continuing so the user can * review it and explicitly continue or finish the flow. * On iOS this forces the native VisionKit preview/editor between captures. * On Android this switches to a one-page-at-a-time flow between ML Kit sessions. * The review/editor screen is still shown automatically when the scan limit is reached. * @default false */ reviewCapturedDocument?: boolean;
/** * Maximum number of documents to scan. * On iOS: VisionKit caps scans at 24 pages (system limit), and the hacked native flow * can still stop earlier when you pass a smaller limit. * On Android: customizable limit; defaults to 20 for performance (clamped 1-24). * Set to 1 for single-scan mode where the scanner stops after one document. * @default 20 on Android, 24 on iOS */ maxNumDocuments?: number;
/** * Format to return scanned images in (file paths or base64 strings). * @default ResponseType.ImageFilePath */ responseType?: ResponseType;
/** * Brightness adjustment applied to scanned images. * Range: -255 to 255 (0 = no change, positive = brighter, negative = darker) * Useful for compensating low-light scans. * @default 0 */ brightness?: number;
/** * Contrast adjustment applied to scanned images. * Range: 0.0 to 10.0 (1.0 = no change, >1 = more contrast, <1 = less contrast) * Helps improve text clarity in poorly lit scans. * @default 1.0 */ contrast?: number;
/** * Android only: scanner mode that controls ML Kit features and filters. * - 'base': Basic scan with crop/rotate, no filters or ML cleaning * - 'base_with_filter': Adds grayscale and auto-enhancement filters * - 'full': All features including ML-based image cleaning (erases stains, fingers, etc.) * @default ScannerMode.Full */ scannerMode?: ScannerMode;}ScanDocumentResponse
Sezione intitolata “ScanDocumentResponse”export interface ScanDocumentResponse { /** * Scanned images in the requested response format. */ scannedImages?: string[];
/** * Indicates whether the scan completed or was cancelled. */ status?: ScanDocumentResponseStatus;
/** * Get the native Capacitor plugin version * * @returns {Promise<{ id: string }>} an Promise with version for this device * @throws An error if the something went wrong */ getPluginVersion(): Promise<{ version: string }>;}ResponseType
Sezione intitolata “ResponseType”export enum ResponseType { /** * Return scanned images as base64-encoded strings. */ Base64 = 'base64',
/** * Return scanned images as file paths on disk. */ ImageFilePath = 'imageFilePath',}ScannerMode
Sezione intitolata “ScannerMode”export enum ScannerMode { /** * Basic document scanning with crop and rotate features only. * No filters or ML-based enhancements. */ Base = 'base',
/** * Basic features plus automatic filters (grayscale, auto-enhancement). */ BaseWithFilter = 'base_with_filter',
/** * Full feature set including ML-based image cleaning. * Automatically removes stains, fingers, and other artifacts. */ Full = 'full',}ScanDocumentResponseStatus
Sezione intitolata “ScanDocumentResponseStatus”export enum ScanDocumentResponseStatus { /** * The scan completed successfully. */ Success = 'success',
/** * The user cancelled the scan flow. */ Cancel = 'cancel',}Fonte di verità
Sezione intitolata “Source Of Truth”Questa pagina è generata dal src/definitions.ts. Riesegui la sync quando il API pubblico cambia upstream.
Continua da Getting Started
Sezione intitolata “Continua da Getting Started”Se stai usando Guida rapida per pianificare dashboard e operazioni API, collegalo a Utilizzo di @capgo/capacitor-document-scanner per la funzionalità nativa in Usare @capgo/capacitor-document-scanner, API Panoramica per i dettagli di implementazione in Panoramica di API, Introduzione per i dettagli implementativi nell'Introduzione, Chiavi API per i dettagli implementativi in API Keys, e Dispositivi per i dettagli implementativi in Dispositivi.