Clienții AWS din domeniul sănătății, servicii financiare, sectorul public și alte industrii stochează miliarde de documente sub formă de imagini sau PDF-uri în Serviciul Amazon de stocare simplă (Amazon S3). Cu toate acestea, aceștia nu pot obține informații, cum ar fi utilizarea informațiilor blocate în documente pentru modele lingvistice mari (LLM) sau să caute până când extrag textul, formularele, tabelele și alte date structurate. Cu procesarea inteligentă a documentelor (IDP) AWS folosind servicii AI, cum ar fi Text Amazon, puteți profita de tehnologia de învățare automată (ML) lider în industrie pentru a procesa rapid și precis datele din PDF-uri sau imagini ale documentelor (TIFF, JPEG, PNG). După ce textul este extras din documente, îl puteți folosi pentru a regla fin un model de fundație, rezumați datele folosind un model de bază, sau trimiteți-l la o bază de date.
În această postare, ne concentrăm pe procesarea unei colecții mari de documente în fișiere text brute și stocarea lor în Amazon S3. Vă oferim două soluții diferite pentru acest caz de utilizare. Primul vă permite să rulați un script Python de pe orice server sau instanță, inclusiv un notebook Jupyter; acesta este cel mai rapid mod de a începe. A doua abordare este o implementare la cheie a diferitelor componente ale infrastructurii folosind Kit AWS Cloud Development (AWS CDK) construcții. Construcția AWS CDK oferă un cadru rezistent și flexibil pentru a vă procesa documentele și pentru a construi o conductă IDP de la capăt la capăt. Prin utilizarea AWS CDK, îi puteți extinde funcționalitatea pentru a include redactarea, stocați rezultatul în Amazon OpenSearch, sau adăugați o personalizare AWS Lambdas funcţionează cu propria logică de afaceri.
Ambele soluții vă permit să procesați rapid multe milioane de pagini. Înainte de a rula oricare dintre aceste soluții la scară, vă recomandăm să testați cu un subset de documente pentru a vă asigura că rezultatele corespund așteptărilor dumneavoastră. În secțiunile următoare, descriem mai întâi soluția de script, urmată de soluția de construcție AWS CDK.
Soluția 1: Folosiți un script Python
Această soluție procesează documentele pentru text brut prin Amazon Texttract cât de repede o permite serviciul, cu așteptarea că, dacă există o eroare în script, procesul va relua de unde a rămas. Soluția utilizează trei servicii diferite: Amazon S3, Amazon DynamoDBși Amazon Text.
Următoarea diagramă ilustrează succesiunea evenimentelor din script. Când scriptul se termină, o stare de finalizare împreună cu timpul necesar vor fi returnate în consola studioului SageMaker.
Am împachetat această soluție într-un script .ipynb și script .py. Puteți utiliza oricare dintre soluțiile implementabile în funcție de cerințele dvs.
Cerințe preliminare
Pentru a rula acest script de pe un notebook Jupyter, Gestionarea identității și accesului AWS Rolul (IAM) atribuit notebook-ului trebuie să aibă permisiuni care să îi permită să interacționeze cu DynamoDB, Amazon S3 și Amazon Texttract. Îndrumarea generală este să vă oferiți permisiuni cu cel mai mic privilegiu pentru fiecare dintre aceste servicii AmazonSageMaker-ExecutionRole
rol. Pentru a afla mai multe, consultați Începeți cu politicile gestionate de AWS și treceți la permisiunile cu cel mai mic privilegiu.
Alternativ, puteți rula acest script din alte medii, cum ar fi un Cloud Elastic de calcul Amazon (Amazon EC2) instanță sau container pe care l-ați gestiona, cu condiția ca Python, Pip3 și SDK AWS pentru Python (Boto3) sunt instalate. Din nou, trebuie aplicate aceleași politici IAM care permit script-ului să interacționeze cu diferitele servicii gestionate.
walkthrough
Pentru a implementa această soluție, mai întâi trebuie să clonați depozitul GitHub.
Trebuie să setați următoarele variabile în script înainte de a-l putea rula:
- tabelul de urmărire – Acesta este numele tabelului DynamoDB care va fi creat.
- intrare_găleată – Aceasta este locația sursă în Amazon S3, care conține documentele pe care doriți să le trimiteți către Amazon Texttract pentru detectarea textului. Pentru această variabilă, furnizați numele găleții, cum ar fi
mybucket
. - găleată_ieșire – Acesta este pentru stocarea locației unde doriți ca Amazon Texttract să scrie rezultatele. Pentru această variabilă, furnizați numele găleții, cum ar fi
myoutputbucket
. - _input_prefix (opțional) – Dacă doriți să selectați anumite fișiere dintr-un folder din compartimentul S3, puteți specifica acest nume de folder ca prefix de intrare. În caz contrar, lăsați valoarea implicită goală pentru a le selecta pe toate.
Scriptul este următorul:
Următoarea schemă de tabel DynamoDB este creată atunci când este rulat scriptul:
Când scriptul este rulat pentru prima dată, acesta va verifica dacă există tabelul DynamoDB și îl va crea automat dacă este necesar. După ce tabelul este creat, trebuie să îl populăm cu o listă de referințe la obiecte de document din Amazon S3 pe care dorim să le procesăm. Script-ul prin proiectare va enumera peste obiectele specificate input_bucket
și populați automat tabelul nostru cu numele lor atunci când rulați. Este nevoie de aproximativ 10 minute pentru a enumera peste 100,000 de documente și a completa aceste nume în tabelul DynamoDB din script. Dacă aveți milioane de obiecte într-o găleată, puteți utiliza alternativ funcția de inventar a Amazon S3 care generează un fișier CSV cu nume, apoi completați tabelul DynamoDB din această listă cu propriul script în avans și nu utilizați funcția numită fetchAllObjectsInBucketandStoreName
comentând-o. Pentru a afla mai multe, consultați Configurarea inventarului Amazon S3.
După cum am menționat mai devreme, există atât o versiune de notebook, cât și o versiune de script Python. Notebook-ul este cel mai simplu mod de a începe; pur și simplu rulați fiecare celulă de la început până la sfârșit.
Dacă decideți să rulați scriptul Python dintr-un CLI, este recomandat să utilizați un multiplexor de terminale, cum ar fi tmux. Acest lucru este pentru a preveni oprirea scriptului în cazul în care sesiunea dvs. SSH se termină. De exemplu: tmux new -d ‘python3 textractFeeder.py’
.
Următorul este punctul de intrare al scriptului; de aici puteți comenta metodele care nu sunt necesare:
Următoarele câmpuri sunt setate când scriptul completează tabelul DynamoDB:
- objectName – Numele documentului aflat în Amazon S3 care va fi trimis către Amazon Text
- bucketName – găleată în care este stocat obiectul document
Aceste două câmpuri trebuie să fie completate dacă decideți să utilizați un fișier CSV din raportul de inventar S3 și să omiteți completarea automată care are loc în script.
Acum că tabelul este creat și populat cu referințele la obiectul documentului, scriptul este gata să înceapă să apeleze Amazon Textex StartDocumentTextDetection
API. Amazon Texttract, similar cu alte servicii gestionate, are un limita implicită pe API-urile numite tranzacții pe secundă (TPS). Dacă este necesar, puteți solicita o creștere a cotei din consola Amazon Texttract. Codul este conceput pentru a utiliza mai multe fire de execuție concomitent la apelarea Amazon Texttract pentru a maximiza debitul cu serviciul. Puteți modifica acest lucru în cod modificând threadCountforTextractAPICall
variabil. În mod implicit, acesta este setat la 20 de fire. Scriptul va citi inițial 200 de rânduri din tabelul DynamoDB și le va stoca într-o listă în memorie care este împachetată cu o clasă pentru siguranța firelor. Fiecare fir de apelare este apoi pornit și rulează pe propria sa bandă de înot. Practic, firul apelant Amazon Texttract va prelua un articol din lista din memorie care conține referința la obiect. Apoi va apela asincronul start_document_text_detection
API și așteptați confirmarea cu ID-ul jobului. ID-ul jobului este apoi actualizat înapoi la rândul DynamoDB pentru acel obiect, iar firul de execuție se va repeta prin preluarea următorului articol din listă.
Următorul este codul principal de orchestrare scenariu:
Firele apelantului vor continua să se repete până când nu mai există elemente în listă, moment în care firele se vor opri fiecare. Când toate firele care operează în cadrul benzilor lor de înot s-au oprit, următoarele 200 de rânduri din DynamoDB sunt preluate și un nou set de 20 de fire este pornit, iar întregul proces se repetă până când fiecare rând care nu conține un ID de job este preluat din DynamoDB și actualizat. În cazul în care scriptul se blochează din cauza unei probleme neașteptate, atunci scriptul poate fi rulat din nou din orchestrate()
metodă. Acest lucru asigură că firele de execuție vor continua să proceseze rândurile care conțin ID-uri de job goale. Rețineți că atunci când rulați din nou orchestrate()
după ce scriptul s-a oprit, există posibilitatea ca câteva documente să fie trimise din nou către Amazon Texttract. Acest număr va fi egal sau mai mic decât numărul de fire care rulau în momentul prăbușirii.
Când nu mai există rânduri care să conțină un ID de job gol în tabelul DynamoDB, scriptul se va opri. Toate rezultatele JSON de la Amazon Texttract pentru toate obiectele vor fi găsite în output_bucket
implicit sub textract_output
pliant. Fiecare subdosar din interior textract_output
va fi denumit cu ID-ul jobului care corespunde ID-ului jobului care a fost stocat în tabelul DynamoDB pentru acel obiect. În folderul ID job, veți găsi JSON, care va fi denumit numeric începând cu 1 și poate cuprinde fișiere JSON suplimentare care ar fi etichetate 2, 3 și așa mai departe. Întinderea fișierelor JSON este rezultatul documentelor dense sau cu mai multe pagini, în care cantitatea de conținut extrasă depășește dimensiunea JSON implicită Amazon Texttract de 1,000 de blocuri. A se referi la Bloca pentru mai multe informații despre blocuri. Aceste fișiere JSON vor conține toate metadatele Amazon Text, inclusiv textul care a fost extras din documente.
Puteți găsi versiunea blocnotesului cu cod Python și scriptul pentru această soluție în GitHub.
A curăța
Când scriptul Python este complet, puteți economisi costuri prin închiderea sau oprirea Amazon SageMaker Studio caietul sau containerul pe care l-ați rotit.
Acum trecem la cea de-a doua soluție pentru documente la scară.
Soluția 2: utilizați o construcție AWS CDK fără server
Această soluție folosește Funcții pas AWS și funcțiile Lambda pentru a orchestra conducta IDP. Noi folosim Construcții IDP AWS CDK, ceea ce facilitează lucrul cu Amazon Texttract la scară. În plus, folosim a Hartă distribuită cu funcții de pas pentru a repeta peste toate fișierele din compartimentul S3 și a iniția procesarea. Prima funcție Lambda determină câte pagini au documentele dvs. Acest lucru permite conductei să utilizeze automat fie sincron (pentru documente cu o singură pagină) fie asincron (pentru documente cu mai multe pagini). Când utilizați API-ul asincron, o funcție suplimentară Lambda este apelată la toate fișierele JSON pe care Amazon Textract le va produce pentru toate paginile dvs. într-un singur fișier JSON, pentru ca aplicațiile dvs. din aval să funcționeze simplu cu informațiile.
Această soluție conține și două funcții Lambda suplimentare. Prima funcție analizează textul din JSON și îl salvează ca fișier text în Amazon S3. A doua funcție analizează JSON și îl stochează pentru metrici privind volumul de lucru.
Următoarea diagramă ilustrează fluxul de lucru Step Functions.
Cerințe preliminare
Această bază de cod folosește AWS CDK și necesită Docker. Puteți implementa acest lucru dintr-un AWS Cloud9 instanță, care are deja configurate AWS CDK și Docker.
walkthrough
Pentru a implementa această soluție, mai întâi trebuie să clonați repertoriu.
După ce clonați depozitul, instalați dependențele:
Apoi utilizați următorul cod pentru a implementa stiva AWS CDK:
Trebuie să furnizați atât compartimentul sursă, cât și prefixul sursă (locația fișierelor pe care doriți să le procesați) pentru această soluție.
Când implementarea este completă, navigați la consola Step Functions, unde ar trebui să vedeți mașina de stare ServerlessIDPArchivePipeline
.
Deschideți pagina de detalii a mașinii de stat și pe Execuții fila, alegeți Începeți execuția.
Alege Începeți execuția din nou pentru a rula mașina de stat.
După ce porniți mașina de stat, puteți monitoriza conducta privind rularea hărții. Vei vedea un Starea procesării articolului secțiune precum următoarea captură de ecran. După cum puteți vedea, acesta este construit pentru a rula și a urmări ceea ce a avut succes și ce a eșuat. Acest proces va continua până când toate documentele vor fi citite.
Cu această soluție, ar trebui să puteți procesa milioane de fișiere în contul dvs. AWS fără să vă faceți griji cu privire la modul în care să determinați corect ce fișiere să trimiteți către ce API sau fișiere corupte care eșuează canalul dvs. Prin consola Step Functions, veți putea urmări și monitoriza fișierele în timp real.
A curăța
După ce conducta dvs. s-a terminat de rulat, pentru a curăța, puteți reveni în proiect și introduceți următoarea comandă:
Aceasta va șterge toate serviciile care au fost implementate pentru acest proiect.
Concluzie
În această postare, am prezentat o soluție care face simplă convertirea imaginilor documentelor și a fișierelor PDF în fișiere text. Aceasta este o condiție prealabilă cheie pentru a vă folosi documentele pentru IA generativă și căutare. Pentru a afla mai multe despre utilizarea textului pentru antrenamentul sau ajustarea modelelor de fond de ten, consultați Reglați fin Llama 2 pentru generarea de text pe Amazon SageMaker JumpStart. Pentru a utiliza cu căutare, consultați Implementați indexul inteligent de căutare a documentelor cu Amazon Texttract și Amazon OpenSearch. Pentru a afla mai multe despre capabilitățile avansate de procesare a documentelor oferite de serviciile AWS AI, consultați Ghid pentru procesarea inteligentă a documentelor pe AWS.
Despre Autori
Tim Condello este un arhitect senior de soluții specializate în inteligență artificială (AI) și învățare automată (ML) la Amazon Web Services (AWS). Accentul său este procesarea limbajului natural și viziunea computerizată. Lui Tim îi place să preia ideile clienților și să le transforme în soluții scalabile.
David Girling este un arhitect senior de soluții AI/ML cu peste douăzeci de ani de experiență în proiectarea, conducerea și dezvoltarea sistemelor de întreprindere. David face parte dintr-o echipă de specialiști care se concentrează pe a ajuta clienții să învețe, să inoveze și să utilizeze aceste servicii de înaltă capacitate cu datele lor pentru cazurile lor de utilizare.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/create-a-document-lake-using-large-scale-text-extraction-from-documents-with-amazon-textract/
- :are
- :este
- :nu
- :Unde
- $UP
- 000
- 1
- 10
- 100
- 12
- 20
- 200
- 7
- 710
- 8
- a
- Capabil
- Despre Noi
- acces
- Cont
- precis
- adăuga
- Suplimentar
- În plus,
- avansa
- avansat
- Avantaj
- După
- din nou
- AI
- Servicii AI
- AI / ML
- TOATE
- permite
- permite
- de-a lungul
- deja
- de asemenea
- Amazon
- Amazon EC2
- Amazon SageMaker
- Text Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- sumă
- an
- analize
- și
- Orice
- api
- API-uri
- aplicatii
- aplicat
- abordare
- aproximativ
- SUNT
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- AS
- alocate
- At
- Auto
- în mod automat
- AWS
- înapoi
- de bază
- Pe scurt
- BE
- fost
- înainte
- miliarde
- Blocuri
- Bootstrap
- atât
- construi
- construit
- afaceri
- by
- apel
- denumit
- apelant
- apel
- CAN
- capacități
- capabil
- caz
- cazuri
- celulă
- sigur
- Schimbare
- verifica
- Alege
- clasă
- curat
- Cloud
- cod
- baza codului
- colectare
- comentariu
- comentând
- Completă
- completare
- componente
- Calcula
- calculator
- Computer Vision
- Consoleze
- construi
- conţine
- Recipient
- conține
- conţinut
- continua
- converti
- corespunde
- Cheltuieli
- ar putea
- Crash
- crea
- a creat
- personalizat
- client
- clienţii care
- de date
- Baza de date
- David
- decide
- Mod implicit
- dependențe
- implementa
- dislocate
- desfășurarea
- descrie
- Amenajări
- proiectat
- proiect
- detalii
- Detectare
- Determina
- determină
- în curs de dezvoltare
- Dezvoltare
- diferit
- distribuite
- Docher
- document
- documente
- Nu
- jos
- două
- fiecare
- Mai devreme
- oricare
- permite
- un capăt la altul
- se încheie
- Intrați
- Afacere
- intrare
- medii
- egal
- evenimente
- Fiecare
- exemplu
- depășește
- execuție
- există
- aşteptare
- aşteptări
- experienţă
- extinde
- extrage
- extracţie
- A eșuat
- în lipsa
- Eșec
- Caracteristică
- puțini
- Domenii
- Fișier
- Fişiere
- financiar
- Servicii financiare
- Găsi
- termina
- First
- prima dată
- flexibil
- Concentra
- se concentrează
- a urmat
- următor
- urmează
- Pentru
- formulare
- găsit
- Fundație
- Cadru
- din
- funcţie
- funcționalitate
- funcții
- Câştig
- General
- generează
- generaţie
- generativ
- AI generativă
- obține
- Go
- îndrumare
- se întâmplă
- Avea
- de asistență medicală
- ajutor
- aici
- extrem de
- lui
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- i
- ID
- idei
- Identitate
- ID-uri
- if
- ilustrează
- imagini
- punerea în aplicare a
- in
- include
- Inclusiv
- Crește
- index
- industrii
- lider în industrie
- informații
- Infrastructură
- inițial
- iniția
- inova
- intrare
- perspective
- instala
- instalat
- instanță
- Inteligență
- Inteligent
- Procesarea inteligentă a documentelor
- interacţiona
- în
- inventar
- IT
- articole
- ESTE
- Loc de munca
- jpg
- JSON
- Cheie
- lac
- Bandă
- limbă
- mare
- pe scară largă
- conducere
- AFLAȚI
- învăţare
- Părăsi
- stânga
- mai puțin
- ca
- Listă
- Lamă
- situat
- locaţie
- blocat
- logică
- mai lung
- cautati
- maşină
- masina de învățare
- Principal
- face
- FACE
- administra
- gestionate
- multe
- Hartă
- Maximaliza
- Întâlni
- menționat
- Metadata
- metodă
- Metode
- Metrici
- milioane
- minute
- ML
- model
- Modele
- monitor
- mai mult
- cele mai multe
- muta
- multiplu
- trebuie sa
- nume
- Numit
- nume
- Natural
- Procesarea limbajului natural
- Navigaţi
- Nevoie
- necesar
- Nou
- următor
- Nu.
- nota
- caiet
- acum
- număr
- obiect
- obiecte
- of
- de pe
- oferit
- on
- ONE
- de operare
- or
- orchestrație
- Altele
- in caz contrar
- al nostru
- afară
- producție
- peste
- propriu
- ambalate
- pagină
- pagini
- parte
- pentru
- permisiuni
- alege
- conducte
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- Politicile
- populat
- Post
- potenţial
- potenţial
- prezentat
- împiedica
- Problemă
- proces
- procese
- prelucrare
- produce
- proiect
- cum se cuvine
- furniza
- prevăzut
- furnizează
- public
- pune
- Piton
- cel mai rapid
- repede
- Crud
- Citeste
- gata
- real
- în timp real
- recomanda
- recomandat
- record
- înregistrări
- trimite
- referință
- referințe
- repeta
- raportează
- depozit
- solicita
- necesar
- Cerinţe
- Necesită
- elastic
- rezultat
- REZULTATE
- Rol
- RÂND
- Alerga
- funcţionare
- ruleaza
- sigur
- Siguranţă
- sagemaker
- acelaşi
- Economisiți
- scalabil
- Scară
- scenariu
- sdk
- Caută
- Al doilea
- Secțiune
- secțiuni
- sector
- vedea
- selecta
- trimite
- senior
- trimis
- Secvenţă
- serverul
- serverless
- serviciu
- Servicii
- sesiune
- set
- să
- închide
- asemănător
- simplu
- pur şi simplu
- Mărimea
- inteligent
- So
- soluţie
- soluţii
- unele
- Sursă
- deschidere
- tensiune
- specialist
- specificată
- tors
- stivui
- Începe
- început
- Pornire
- Stat
- Stare
- Pas
- Stop
- oprit
- oprire
- depozitare
- stoca
- stocate
- magazine
- stocarea
- simplu
- Şir
- structurat
- studio
- de succes
- astfel de
- sigur
- sisteme
- tabel
- Lua
- luate
- ia
- luare
- echipă
- Tehnologia
- Terminal
- Testarea
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- decât
- acea
- informațiile
- Sursa
- Statul
- lor
- Lor
- apoi
- Acolo.
- Acestea
- ei
- acest
- aceste
- trei
- Prin
- debit
- Tim
- timp
- la
- spre
- tps
- urmări
- Tren
- Tranzacții
- Cotitură
- la cheie
- Două
- incapabil
- în
- Neașteptat
- până la
- actualizat
- utilizare
- carcasa de utilizare
- utilizări
- folosind
- folosi
- utilizează
- variabil
- diverse
- versiune
- viziune
- aștepta
- vrea
- a fost
- Ceas
- Cale..
- we
- web
- servicii web
- au fost
- Ce
- cand
- care
- întreg
- voi
- cu
- în
- fără
- Apartamente
- flux de lucru
- îngrijorător
- ar
- Înfășurat
- scrie
- ani
- Tu
- Ta
- zephyrnet