I clienti AWS nel settore sanitario, dei servizi finanziari, del settore pubblico e di altri settori archiviano miliardi di documenti come immagini o PDF Servizio di archiviazione semplice Amazon (Amazon S3). Tuttavia, non sono in grado di ottenere informazioni dettagliate, ad esempio utilizzando le informazioni bloccate nei documenti per modelli linguistici di grandi dimensioni (LLM) o di eseguire ricerche finché non estraggono testo, moduli, tabelle e altri dati strutturati. Con l'elaborazione intelligente dei documenti (IDP) di AWS che utilizza servizi di intelligenza artificiale come Testo Amazon, puoi sfruttare la tecnologia di machine learning (ML) leader del settore per elaborare in modo rapido e accurato i dati da PDF o immagini di documenti (TIFF, JPEG, PNG). Dopo che il testo è stato estratto dai documenti, è possibile utilizzarlo per mettere a punto un modello di fondazione, riassumere i dati utilizzando un modello di baseo inviarlo a un database.
In questo post, ci concentreremo sull'elaborazione di un'ampia raccolta di documenti in file di testo non elaborati e sulla loro archiviazione in Amazon S3. Ti forniamo due diverse soluzioni per questo caso d'uso. Il primo ti consente di eseguire uno script Python da qualsiasi server o istanza incluso un notebook Jupyter; questo è il modo più rapido per iniziare. Il secondo approccio è l'implementazione chiavi in mano di vari componenti dell'infrastruttura Kit di sviluppo cloud AWS (AWSCDK) costrutti. La struttura AWS CDK fornisce un framework resiliente e flessibile per elaborare i documenti e creare una pipeline IDP end-to-end. Attraverso l'uso di AWS CDK, puoi estendere le sue funzionalità per includere la redazione, archiviare l'output in Amazon OpenSearcho aggiungi una personalizzazione AWS Lambda funzionare con la propria logica aziendale.
Entrambe queste soluzioni consentono di elaborare rapidamente molti milioni di pagine. Prima di eseguire una di queste soluzioni su larga scala, ti consigliamo di testare un sottoinsieme dei tuoi documenti per assicurarti che i risultati soddisfino le tue aspettative. Nelle sezioni seguenti descriviamo innanzitutto la soluzione dello script, seguita dalla soluzione del costrutto AWS CDK.
Soluzione 1: utilizzare uno script Python
Questa soluzione elabora i documenti per il testo non elaborato tramite Amazon Textract con la rapidità consentita dal servizio, con l'aspettativa che, in caso di errore nello script, il processo riprenderà da dove era stato interrotto. La soluzione utilizza tre diversi servizi: Amazon S3, Amazon DynamoDBe Amazon Texttract.
Il diagramma seguente illustra la sequenza di eventi all'interno dello script. Al termine dello script, alla console di SageMaker Studio verrà restituito lo stato di completamento insieme al tempo impiegato.
Abbiamo confezionato questa soluzione in a script .ipynb ed .py. Puoi utilizzare una qualsiasi delle soluzioni distribuibili secondo le tue esigenze.
Prerequisiti
Per eseguire questo script da un notebook Jupyter, il file Gestione dell'identità e dell'accesso di AWS (IAM) assegnato al notebook deve disporre di autorizzazioni che gli consentano di interagire con DynamoDB, Amazon S3 e Amazon Textract. La guida generale è fornire al tuo account le autorizzazioni con privilegi minimi per ciascuno di questi servizi AmazonSageMaker-ExecutionRole
ruolo. Per saperne di più, fare riferimento a Inizia con le policy gestite da AWS e passa alle autorizzazioni con privilegi minimi.
In alternativa, puoi eseguire questo script da altri ambienti come un Cloud di calcolo elastico di Amazon (Amazon EC2) o contenitore che gestiresti, a condizione che Python, Pip3 e il file SDK AWS per Python (Boto3) sono installati. Anche in questo caso è necessario applicare le stesse policy IAM che consentono allo script di interagire con i vari servizi gestiti.
Soluzione
Per implementare questa soluzione, devi prima clonare il repository GitHub.
È necessario impostare le seguenti variabili nello script prima di poterlo eseguire:
- tabella_di_tracciamento – Questo è il nome della tabella DynamoDB che verrà creata.
- input_bucket – Questa è la posizione di origine in Amazon S3 che contiene i documenti che desideri inviare ad Amazon Textract per il rilevamento del testo. Per questa variabile, fornisci il nome del bucket, ad esempio
mybucket
. - output_bucket – Serve per memorizzare la posizione in cui desideri che Amazon Textract scriva i risultati. Per questa variabile, fornisci il nome del bucket, ad esempio
myoutputbucket
. - _input_prefix (facoltativo) – Se desideri selezionare determinati file da una cartella nel bucket S3, puoi specificare il nome di questa cartella come prefisso di input. Altrimenti, lascia vuoto il valore predefinito per selezionarli tutti.
La sceneggiatura è la seguente:
Il seguente schema di tabella DynamoDB viene creato quando viene eseguito lo script:
Quando lo script viene eseguito per la prima volta, controllerà se la tabella DynamoDB esiste e la creerà automaticamente se necessario. Dopo aver creato la tabella, dobbiamo popolarla con un elenco di riferimenti a oggetti di documento da Amazon S3 che vogliamo elaborare. Lo script in base alla progettazione enumererà gli oggetti specificati input_bucket
e popolano automaticamente la nostra tabella con i loro nomi quando vengono eseguiti. Sono necessari circa 10 minuti per enumerare oltre 100,000 documenti e inserire tali nomi nella tabella DynamoDB dallo script. Se disponi di milioni di oggetti in un bucket, puoi in alternativa utilizzare la funzionalità di inventario di Amazon S3 che genera un file CSV di nomi, quindi popolare in anticipo la tabella DynamoDB da questo elenco con il tuo script e non utilizzare la funzione chiamata fetchAllObjectsInBucketandStoreName
commentandolo. Per saperne di più, fare riferimento a Configurazione dell'inventario Amazon S3.
Come accennato in precedenza, esiste sia una versione per notebook che una versione per script Python. Il taccuino è il modo più semplice per iniziare; esegui semplicemente ogni cella dall'inizio alla fine.
Se decidi di eseguire lo script Python da una CLI, ti consigliamo di utilizzare un multiplexer di terminale come tmux. Questo per evitare che lo script si interrompa al termine della sessione SSH. Per esempio: tmux new -d ‘python3 textractFeeder.py’
.
La seguente è la punto di ingresso dello script; da qui puoi commentare i metodi non necessari:
I seguenti campi vengono impostati quando lo script compila la tabella DynamoDB:
- oggettoNome – Il nome del documento situato in Amazon S3 che verrà inviato ad Amazon Textract
- nome secchio – Il bucket in cui è archiviato l'oggetto documento
Questi due campi devono essere compilati se decidi di utilizzare un file CSV dal report di inventario S3 e di saltare il popolamento automatico che avviene all'interno dello script.
Ora che la tabella è stata creata e popolata con i riferimenti agli oggetti del documento, lo script è pronto per iniziare a chiamare Amazon Textract StartDocumentTextDetection
API. Amazon Textract, simile ad altri servizi gestiti, ha un file limite predefinito sulle API chiamate transazioni al secondo (TPS). Se necessario, puoi richiedere un aumento della quota dalla console Amazon Textract. Il codice è progettato per utilizzare più thread contemporaneamente quando si chiama Amazon Textract per massimizzare il throughput con il servizio. Puoi cambiarlo all'interno del codice modificando il file threadCountforTextractAPICall
variabile. Per impostazione predefinita, è impostato su 20 thread. Lo script leggerà inizialmente 200 righe dalla tabella DynamoDB e le memorizzerà in un elenco in memoria racchiuso in una classe per la sicurezza del thread. Ogni thread chiamante viene quindi avviato e viene eseguito all'interno della propria corsia di nuoto. Fondamentalmente, il thread chiamante di Amazon Textract recupererà un elemento dall'elenco in memoria che contiene il nostro riferimento all'oggetto. Quindi chiamerà l'asincrono start_document_text_detection
API e attendere la conferma con l'ID lavoro. L'ID lavoro viene quindi aggiornato nuovamente alla riga DynamoDB per quell'oggetto e il thread verrà ripetuto recuperando l'elemento successivo dall'elenco.
Di seguito è riportato il codice di orchestrazione principale copione:
I thread chiamanti continueranno a ripetersi finché non ci saranno più elementi nell'elenco, a quel punto ciascuno dei thread si interromperà. Quando tutti i thread che operano all'interno delle rispettive corsie di nuoto vengono interrotti, vengono recuperate le successive 200 righe da DynamoDB e viene avviato un nuovo set di 20 thread e l'intero processo si ripete fino a quando ogni riga che non contiene un ID lavoro viene recuperata da DynamoDB e aggiornato. Se lo script dovesse bloccarsi a causa di qualche problema imprevisto, lo script può essere eseguito nuovamente dal file orchestrate()
metodo. Ciò garantisce che i thread continuino a elaborare le righe che contengono ID lavoro vuoti. Tieni presente che quando riesegui il file orchestrate()
metodo dopo l'interruzione dello script, è possibile che alcuni documenti vengano nuovamente inviati ad Amazon Textract. Questo numero sarà uguale o inferiore al numero di thread in esecuzione al momento dell'arresto anomalo.
Quando non sono più presenti righe contenenti un ID lavoro vuoto nella tabella DynamoDB, lo script si interromperà. Tutto l'output JSON di Amazon Textract per tutti gli oggetti verrà trovato nel file output_bucket
per impostazione predefinita sotto il textract_output
cartella. Ogni sottocartella all'interno textract_output
verrà denominato con l'ID lavoro che corrisponde all'ID lavoro archiviato nella tabella DynamoDB per quell'oggetto. All'interno della cartella dell'ID lavoro, troverai il JSON, che verrà denominato numericamente a partire da 1 e può potenzialmente estendersi su file JSON aggiuntivi che verrebbero etichettati 2, 3 e così via. L'estensione dei file JSON è il risultato di documenti densi o multipagina, in cui la quantità di contenuto estratto supera la dimensione JSON predefinita di Amazon Textract di 1,000 blocchi. Fare riferimento a Bloccare per ulteriori informazioni sui blocchi. Questi file JSON conterranno tutti i metadati di Amazon Textract, incluso il testo estratto dai documenti.
È possibile trovare la versione del notebook del codice Python e lo script per questa soluzione in GitHub.
ripulire
Una volta completato lo script Python, puoi risparmiare sui costi chiudendo o arrestando il file Amazon Sage Maker Studio quaderno o contenitore che hai fatto girare.
Passiamo ora alla nostra seconda soluzione per documenti su larga scala.
Soluzione 2: utilizzare un costrutto AWS CDK serverless
Questa soluzione utilizza Funzioni AWS Step e funzioni Lambda per orchestrare la pipeline IDP. Noi usiamo il Costrutti IDP AWS CDK, che semplificano il lavoro con Amazon Textract su larga scala. Inoltre, utilizziamo a Mappa distribuita delle funzioni passo per eseguire l'iterazione su tutti i file nel bucket S3 e avviare l'elaborazione. La prima funzione Lambda determina quante pagine hanno i tuoi documenti. Ciò consente alla pipeline di utilizzare automaticamente l'API sincrona (per documenti a pagina singola) o asincrona (per documenti a più pagine). Quando si utilizza l'API asincrona, viene richiamata una funzione Lambda aggiuntiva su tutti i file JSON che Amazon Textract produrrà per tutte le tue pagine in un unico file JSON per semplificare l'utilizzo delle informazioni da parte delle applicazioni downstream.
Questa soluzione contiene anche due funzioni Lambda aggiuntive. La prima funzione analizza il testo dal JSON e lo salva come file di testo in Amazon S3. La seconda funzione analizza il JSON e lo memorizza per i parametri sul carico di lavoro.
Il seguente diagramma illustra il flusso di lavoro di Step Functions.
Prerequisiti
Questa codebase utilizza AWS CDK e richiede Docker. Puoi distribuirlo da un file AWS Cloud9 istanza, su cui sono già configurati AWS CDK e Docker.
Soluzione
Per implementare questa soluzione, devi prima clonare il file repository.
Dopo aver clonato il repository, installa le dipendenze:
Quindi utilizza il codice seguente per distribuire lo stack AWS CDK:
Devi fornire sia il bucket di origine che il prefisso di origine (il percorso dei file che desideri elaborare) per questa soluzione.
Una volta completata la distribuzione, vai alla console Step Functions, dove dovresti vedere la macchina a stati ServerlessIDPArchivePipeline
.
Apri la pagina dei dettagli della macchina a stati e sul file esecuzioni scheda, scegliere Inizia l'esecuzione.
Scegli Inizia l'esecuzione nuovamente per far funzionare la macchina statale.
Dopo aver avviato la macchina a stati, puoi monitorare la pipeline osservando l'esecuzione della mappa. Vedrai un Stato di elaborazione dell'articolo sezione come nella schermata seguente. Come puoi vedere, questo è progettato per funzionare e tenere traccia di ciò che ha avuto successo e di ciò che ha fallito. Questo processo continuerà fino a quando tutti i documenti non saranno stati letti.
Con questa soluzione, dovresti essere in grado di elaborare milioni di file nel tuo account AWS senza preoccuparti di come determinare correttamente quali file inviare a quale API o di file corrotti che non riescono a gestire la pipeline. Attraverso la console Step Functions potrai vedere e monitorare i tuoi file in tempo reale.
ripulire
Una volta terminata l'esecuzione della pipeline, per ripulirla puoi tornare al progetto e immettere il seguente comando:
Ciò eliminerà tutti i servizi distribuiti per questo progetto.
Conclusione
In questo post, abbiamo presentato una soluzione che semplifica la conversione delle immagini dei documenti e dei PDF in file di testo. Questo è un prerequisito chiave per utilizzare i tuoi documenti per l'intelligenza artificiale generativa e la ricerca. Per ulteriori informazioni sull'utilizzo del testo per addestrare o perfezionare i modelli di base, fare riferimento a Ottimizza Llama 2 per la generazione di testo su Amazon SageMaker JumpStart. Per l'utilizzo con la ricerca, fare riferimento a Implementa un indice di ricerca intelligente dei documenti con Amazon Textract e Amazon OpenSearch. Per ulteriori informazioni sulle funzionalità avanzate di elaborazione dei documenti offerte dai servizi AWS AI, fare riferimento a Linee guida per l'elaborazione intelligente dei documenti su AWS.
Informazioni sugli autori
Tim Condel è un architetto senior di soluzioni specializzato in intelligenza artificiale (AI) e machine learning (ML) presso Amazon Web Services (AWS). Il suo focus è l'elaborazione del linguaggio naturale e la visione artificiale. A Tim piace prendere le idee dei clienti e trasformarle in soluzioni scalabili.
David Girling è un architetto senior di soluzioni AI/ML con oltre vent'anni di esperienza nella progettazione, guida e sviluppo di sistemi aziendali. David fa parte di un team di specialisti che si concentra sull'aiutare i clienti ad apprendere, innovare e utilizzare questi servizi altamente capaci con i loro dati per i loro casi d'uso.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/create-a-document-lake-using-large-scale-text-extraction-from-documents-with-amazon-textract/
- :ha
- :È
- :non
- :Dove
- $ SU
- 000
- 1
- 10
- 100
- 12
- 20
- 200
- 7
- 710
- 8
- a
- capace
- WRI
- accesso
- Il mio account
- con precisione
- aggiungere
- aggiuntivo
- Inoltre
- avanzare
- Avanzate
- Vantaggio
- Dopo shavasana, sedersi in silenzio; saluti;
- ancora
- AI
- Servizi di intelligenza artificiale
- AI / ML
- Tutti
- consentire
- consente
- lungo
- già
- anche
- Amazon
- Amazon EC2
- Amazon Sage Maker
- Testo Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- quantità
- an
- analisi
- ed
- in qualsiasi
- api
- API
- applicazioni
- applicato
- approccio
- circa
- SONO
- artificiale
- intelligenza artificiale
- Intelligenza artificiale (AI)
- AS
- addetto
- At
- auto
- automaticamente
- AWS
- precedente
- base
- fondamentalmente
- BE
- stato
- prima
- miliardi
- Blocchi
- bootstrap
- entrambi
- costruire
- costruito
- affari
- by
- chiamata
- detto
- visitatore
- chiamata
- Materiale
- funzionalità
- capace
- Custodie
- casi
- cella
- certo
- il cambiamento
- dai un'occhiata
- Scegli
- classe
- cavedano
- Cloud
- codice
- base del codice
- collezione
- commento
- Commentando
- completamento di una
- completamento
- componenti
- Calcolare
- computer
- Visione computerizzata
- consolle
- costruire
- contenere
- Contenitore
- contiene
- contenuto
- continua
- convertire
- corrisponde
- Costi
- potuto
- Crash
- creare
- creato
- costume
- cliente
- Clienti
- dati
- Banca Dati
- David
- decide
- Predefinito
- dipendenze
- schierare
- schierato
- deployment
- descrivere
- Design
- progettato
- progettazione
- dettagli
- rivelazione
- Determinare
- determina
- in via di sviluppo
- Mercato
- diverso
- distribuito
- docker
- documento
- documenti
- non
- giù
- dovuto
- ogni
- In precedenza
- o
- Abilita
- da un capo all'altro
- finisce
- entrare
- Impresa
- iscrizione
- ambienti
- pari
- eventi
- Ogni
- esempio
- supera
- esecuzione
- esiste
- aspettativa
- le aspettative
- esperienza
- estendere
- estratto
- estrazione
- fallito
- in mancanza di
- Fallimento
- caratteristica
- pochi
- campi
- Compila il
- File
- finanziario
- servizi finanziari
- Trovate
- finire
- Nome
- prima volta
- flessibile
- Focus
- si concentra
- seguito
- i seguenti
- segue
- Nel
- forme
- essere trovato
- Fondazione
- Contesto
- da
- function
- funzionalità
- funzioni
- Guadagno
- Generale
- genera
- ELETTRICA
- generativo
- AI generativa
- ottenere
- Go
- guida
- accade
- Avere
- assistenza sanitaria
- aiutare
- qui
- vivamente
- il suo
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- i
- ID
- idee
- Identità
- ids
- if
- illustra
- immagini
- realizzare
- in
- includere
- Compreso
- Aumento
- Index
- industrie
- leader del settore
- informazioni
- Infrastruttura
- inizialmente
- avviare
- innovare
- ingresso
- intuizioni
- install
- installato
- esempio
- Intelligence
- Intelligente
- Elaborazione intelligente dei documenti
- interagire
- ai miglioramenti
- inventario
- IT
- elementi
- SUO
- Lavoro
- jpg
- json
- Le
- lago
- Corsia
- Lingua
- grandi
- larga scala
- principale
- IMPARARE
- apprendimento
- Lasciare
- a sinistra
- meno
- piace
- Lista
- Lama
- collocato
- località
- bloccato
- logica
- più a lungo
- cerca
- macchina
- machine learning
- Principale
- make
- FA
- gestire
- gestito
- molti
- carta geografica
- Massimizzare
- Soddisfare
- menzionato
- Metadati
- metodo
- metodi
- Metrica
- milioni
- Minuti
- ML
- modello
- modelli
- Monitorare
- Scopri di più
- maggior parte
- cambiano
- multiplo
- devono obbligatoriamente:
- Nome
- Detto
- nomi
- Naturale
- Elaborazione del linguaggio naturale
- Navigare
- Bisogno
- di applicazione
- New
- GENERAZIONE
- no
- Nota
- taccuino
- adesso
- numero
- oggetto
- oggetti
- of
- MENO
- offerto
- on
- ONE
- operativo
- or
- orchestrazione
- Altro
- altrimenti
- nostro
- su
- produzione
- ancora
- proprio
- confezionati
- pagina
- pagine
- parte
- per
- permessi
- scegliere
- conduttura
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- Termini e Condizioni
- popolata
- Post
- potenziale
- potenzialmente
- presentata
- prevenire
- Problema
- processi
- i processi
- lavorazione
- produrre
- progetto
- propriamente
- fornire
- purché
- fornisce
- la percezione
- metti
- Python
- più veloce
- rapidamente
- Crudo
- Leggi
- pronto
- di rose
- tempo reale
- raccomandare
- raccomandato
- record
- record
- riferimento
- riferimento
- Riferimenti
- ripetere
- rapporto
- deposito
- richiesta
- necessario
- Requisiti
- richiede
- elastico
- colpevole
- Risultati
- Ruolo
- RIGA
- Correre
- running
- corre
- sicura
- Sicurezza
- sagemaker
- stesso
- Risparmi
- scalabile
- Scala
- copione
- sdk
- Cerca
- Secondo
- Sezione
- sezioni
- settore
- vedere
- select
- inviare
- anziano
- inviato
- Sequenza
- server
- serverless
- servizio
- Servizi
- Sessione
- set
- dovrebbero
- chiudendo
- simile
- Un'espansione
- semplicemente
- Taglia
- smart
- So
- soluzione
- Soluzioni
- alcuni
- Fonte
- campata
- tensione
- specialista
- specificato
- spun
- pila
- inizia a
- iniziato
- Di partenza
- Regione / Stato
- Stato dei servizi
- step
- Fermare
- fermato
- sosta
- conservazione
- Tornare al suo account
- memorizzati
- negozi
- memorizzare
- lineare
- Corda
- strutturato
- studio
- di successo
- tale
- sicuro
- SISTEMI DI TRATTAMENTO
- tavolo
- Fai
- preso
- prende
- presa
- team
- Tecnologia
- terminal
- Testing
- testo
- di
- che
- Il
- le informazioni
- L’ORIGINE
- Lo Stato
- loro
- Li
- poi
- Là.
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- questo
- quelli
- tre
- Attraverso
- portata
- Tim
- tempo
- a
- verso
- tps
- pista
- Treni
- Le transazioni
- Svolta
- carceriere
- seconda
- incapace
- per
- Inaspettato
- fino a quando
- aggiornato
- uso
- caso d'uso
- usa
- utilizzando
- utilizzare
- utilizza
- variabile
- vario
- versione
- visione
- aspettare
- volere
- Prima
- Orologio
- Modo..
- we
- sito web
- servizi web
- sono stati
- Che
- quando
- quale
- tutto
- volere
- con
- entro
- senza
- Lavora
- flusso di lavoro
- preoccupante
- sarebbe
- Avvolto
- scrivere
- anni
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro