Stranke AWS v zdravstvu, finančnih storitvah, javnem sektorju in drugih panogah shranjujejo milijarde dokumentov kot slike ali datoteke PDF v Preprosta storitev shranjevanja Amazon (Amazon S3). Vendar pa ne morejo pridobiti vpogledov, kot je uporaba informacij, zaklenjenih v dokumentih, za velike jezikovne modele (LLM) ali iskati, dokler ne izvlečejo besedila, obrazcev, tabel in drugih strukturiranih podatkov. Z AWS inteligentno obdelavo dokumentov (IDP) z uporabo storitev AI, kot je npr Amazonovo besedilo, lahko izkoristite vodilno tehnologijo strojnega učenja (ML) za hitro in natančno obdelavo podatkov iz datotek PDF ali slik dokumentov (TIFF, JPEG, PNG). Ko je besedilo izvlečeno iz dokumentov, ga lahko uporabite za natančno nastavitev temeljnega modela, povzeti podatke z uporabo temeljnega modelaali pa ga pošljete v bazo podatkov.
V tej objavi se osredotočamo na obdelavo velike zbirke dokumentov v neobdelane besedilne datoteke in njihovo shranjevanje v Amazon S3. Ponujamo vam dve različni rešitvi za ta primer uporabe. Prvi vam omogoča zagon skripta Python iz katerega koli strežnika ali primerka, vključno z prenosnim računalnikom Jupyter; to je najhitrejši način za začetek. Drugi pristop je postavitev različnih infrastrukturnih komponent na ključ z uporabo Komplet za razvoj oblaka AWS (AWS CDK) konstrukti. Konstrukcija AWS CDK zagotavlja odporno in prilagodljivo ogrodje za obdelavo vaših dokumentov in gradnjo cevovoda IDP od konca do konca. Z uporabo AWS CDK lahko njegovo funkcionalnost razširite tako, da vključuje urejanje, shranite rezultat v Amazon OpenSearchali dodajte po meri AWS Lambda delujejo z lastno poslovno logiko.
Obe rešitvi omogočata hitro obdelavo več milijonov strani. Preden zaženete eno od teh rešitev v velikem obsegu, priporočamo testiranje s podnaborom vaših dokumentov, da zagotovite, da rezultati izpolnjujejo vaša pričakovanja. V naslednjih razdelkih najprej opišemo skriptno rešitev, ki ji sledi konstruktna rešitev AWS CDK.
1. rešitev: Uporabite skript Python
Ta rešitev obdeluje dokumente za neobdelano besedilo prek Amazon Texttract tako hitro, kot to omogoča storitev, s pričakovanjem, da se bo v primeru napake v skriptu postopek nadaljeval od tam, kjer se je končal. Rešitev uporablja tri različne storitve: Amazon S3, Amazon DynamoDBin Amazon Texttract.
Naslednji diagram prikazuje zaporedje dogodkov v skriptu. Ko se skript konča, bo status dokončanja skupaj s porabljenim časom vrnjen na konzolo studia SageMaker.
To rešitev smo zapakirali v a skript .ipynb in skript .py. Uporabite lahko katero koli umestitveno rešitev glede na vaše zahteve.
Predpogoji
Če želite zagnati ta skript iz prenosnika Jupyter, je AWS upravljanje identitete in dostopa (IAM), dodeljena zvezku, mora imeti dovoljenja, ki mu omogočajo interakcijo z DynamoDB, Amazon S3 in Amazon Texttract. Splošno vodilo je, da za vsako od teh storitev zagotovite dovoljenja z najmanjšimi pravicami AmazonSageMaker-ExecutionRole
vlogo. Če želite izvedeti več, glejte Začnite s pravilniki, ki jih upravlja AWS, in se pomaknite proti dovoljenjem z najmanj privilegiji.
Ta skript lahko zaženete tudi iz drugih okolij, kot je npr Amazonski elastični računalniški oblak (Amazon EC2) primerek ali vsebnik, ki bi ga upravljali, pod pogojem, da Python, Pip3 in AWS SDK za Python (Boto3) so nameščeni. Spet je treba uporabiti iste politike IAM, ki skriptu omogočajo interakcijo z različnimi upravljanimi storitvami.
Walkthrough
Če želite implementirati to rešitev, morate najprej klonirati repozitorij GitHub.
V skriptu morate nastaviti naslednje spremenljivke, preden ga lahko zaženete:
- sledilna_tabela – To je ime tabele DynamoDB, ki bo ustvarjena.
- vhodno_vedro – To je vaša izvorna lokacija v Amazon S3, ki vsebuje dokumente, ki jih želite poslati v Amazon Texttract za zaznavanje besedila. Za to spremenljivko podajte ime vedra, kot je
mybucket
. - izhodno vedro – To je za shranjevanje lokacije, kamor želite, da Amazon Texttract zapiše rezultate. Za to spremenljivko podajte ime vedra, kot je
myoutputbucket
. - _input_prefix (izbirno) – Če želite izbrati določene datoteke znotraj mape v vedru S3, lahko to ime mape določite kot vnosno predpono. V nasprotnem primeru pustite privzeto prazno, da izberete vse.
Skript je naslednji:
Ko se skript zažene, se ustvari naslednja shema tabele DynamoDB:
Ko se skript prvič zažene, bo preveril, ali tabela DynamoDB obstaja, in jo po potrebi samodejno ustvaril. Ko je tabela ustvarjena, jo moramo zapolniti s seznamom referenc objektov dokumentov iz Amazon S3, ki jih želimo obdelati. Skript po zasnovi bo oštevilčil objekte v podanem input_bucket
in ob zagonu samodejno zapolni našo tabelo z njihovimi imeni. Traja približno 10 minut, da naštejemo več kot 100,000 dokumentov in vnesemo ta imena v tabelo DynamoDB iz skripta. Če imate na milijone predmetov v vedru, lahko namesto tega uporabite funkcijo inventarja Amazon S3, ki ustvari datoteko CSV z imeni, nato pa tabelo DynamoDB s tega seznama vnaprej napolnite s svojim skriptom in ne uporabite funkcije, imenovane fetchAllObjectsInBucketandStoreName
s komentiranjem. Če želite izvedeti več, glejte Konfiguriranje inventarja Amazon S3.
Kot smo že omenili, obstajata različica za prenosnik in različica skripta Python. Beležnica je najpreprostejši način za začetek; preprosto zaženite vsako celico od začetka do konca.
Če se odločite zagnati skript Python iz CLI, je priporočljivo, da uporabite terminalski multiplekser, kot je tmux. To je namenjeno preprečevanju zaustavitve skripta, če se vaša seja SSH konča. Na primer: tmux new -d ‘python3 textractFeeder.py’
.
Sledi vstopna točka skripta; od tu lahko komentirate metode, ki niso potrebne:
Naslednja polja so nastavljena, ko skript zapolnjuje tabelo DynamoDB:
- objectName – Ime dokumenta v Amazon S3, ki bo poslan v Amazon Texttract
- bucketName – Vedro, kjer je shranjen predmet dokumenta
Ti dve polji morata biti izpolnjeni, če se odločite za uporabo datoteke CSV iz poročila o inventarju S3 in preskočite samodejno izpolnjevanje, ki se zgodi v skriptu.
Zdaj, ko je tabela ustvarjena in poseljena s sklici na predmet dokumenta, je skript pripravljen za začetek klicanja Amazon Texttract StartDocumentTextDetection
API. Amazon Texttract, podobno kot druge upravljane storitve, ima privzeta omejitev na API-jih, imenovanih transakcije na sekundo (TPS). Če je potrebno, lahko zahtevate povečanje kvote na konzoli Amazon Texttract. Koda je zasnovana tako, da pri klicu storitve Amazon Texttract uporablja več niti hkrati, da se poveča prepustnost storitve. To lahko spremenite v kodi tako, da spremenite threadCountforTextractAPICall
spremenljivka. Privzeto je to nastavljeno na 20 niti. Skript bo na začetku prebral 200 vrstic iz tabele DynamoDB in jih shranil na seznam v pomnilniku, ki je ovit z razredom za varnost niti. Vsaka nit klicatelja se nato zažene in teče znotraj svoje plavalne steze. V bistvu bo nit klicatelja Amazon Texttract pridobila element s seznama v pomnilniku, ki vsebuje referenco našega objekta. Nato bo poklical asinhrono start_document_text_detection
API in počakajte na potrditev z ID-jem opravila. ID opravila se nato posodobi nazaj v vrstico DynamoDB za ta objekt in nit se bo ponovila tako, da bo pridobila naslednji element s seznama.
Sledi glavna koda orkestracije script:
Niti klicateljev se bodo še naprej ponavljale, dokler na seznamu ne bo več elementov, na kateri točki se bodo niti ustavile. Ko se vse niti, ki delujejo znotraj svojih plavalnih stez, ustavijo, se iz DynamoDB pridobi naslednjih 200 vrstic in zažene se nov niz 20 niti, in celoten postopek se ponavlja, dokler ni vsaka vrstica, ki ne vsebuje ID-ja opravila, pridobljena iz DynamoDB in posodobljeno. Če se skript zruši zaradi nepričakovane težave, lahko skript znova zaženete iz orchestrate()
metoda. To zagotavlja, da bodo niti nadaljevale z obdelavo vrstic, ki vsebujejo prazne ID-je opravil. Upoštevajte, da pri ponovnem zagonu orchestrate()
po ustavitvi skripta obstaja možnost, da bo nekaj dokumentov znova poslanih v Amazon Texttract. To število bo enako ali manjše od števila niti, ki so se izvajale v času zrušitve.
Ko v tabeli DynamoDB ni več vrstic, ki vsebujejo prazen ID opravila, se bo skript ustavil. Ves izhod JSON iz Amazon Texttract za vse predmete bo na voljo v output_bucket
privzeto pod textract_output
mapo. Vsaka podmapa znotraj textract_output
bo poimenovan z ID-jem opravila, ki ustreza ID-ju opravila, ki je bil shranjen v tabeli DynamoDB za ta objekt. Znotraj mape ID opravila boste našli JSON, ki bo številčno poimenovan z začetkom pri 1 in lahko potencialno obsega dodatne datoteke JSON, ki bi bile označene z 2, 3 itd. Raztezanje datotek JSON je posledica gostih ali večstranskih dokumentov, kjer količina ekstrahirane vsebine presega privzeto velikost JSON Amazon Texttract 1,000 blokov. Nanašati se na Block za več informacij o blokih. Te datoteke JSON bodo vsebovale vse metapodatke Amazon Texttract, vključno z besedilom, ki je bilo ekstrahirano iz dokumentov.
Različico zvezka s kodo Python in skript za to rešitev najdete v GitHub.
Čiščenje
Ko je skript Python končan, lahko prihranite stroške tako, da zaustavite ali ustavite Amazon SageMaker Studio zvezek ali posoda, ki ste jo zavrteli.
Zdaj pa k naši drugi rešitvi za dokumente v velikem obsegu.
2. rešitev: Uporabite konstrukt AWS CDK brez strežnika
Ta rešitev uporablja Korak funkcije AWS in funkcije Lambda za orkestracijo cevovoda IDP. Uporabljamo IDP AWS CDK konstrukcije, ki olajšajo delo z Amazon Texttract v velikem obsegu. Poleg tega uporabljamo a Korak Funkcije porazdeljene karte da ponovite vse datoteke v vedru S3 in začnete obdelavo. Prva funkcija Lambda določa, koliko strani ima vaš dokument. To omogoča cevovodu samodejno uporabo sinhronega (za enostranske dokumente) ali asinhronega (za večstranske dokumente) API-ja. Pri uporabi asinhronega API-ja se kliče dodatna funkcija Lambda za vse datoteke JSON, ki jih bo Amazon Texttract izdelal za vse vaše strani v eno datoteko JSON, da olajša delo vaših nadaljnjih aplikacij z informacijami.
Ta rešitev vsebuje tudi dve dodatni funkciji Lambda. Prva funkcija razčleni besedilo iz JSON in ga shrani kot besedilno datoteko v Amazon S3. Druga funkcija analizira JSON in ga shrani za meritve delovne obremenitve.
Naslednji diagram prikazuje potek dela funkcij korakov.
Predpogoji
Ta kodna osnova uporablja AWS CDK in zahteva Docker. To lahko uvedete iz AWS Cloud9 primerek, ki ima že nastavljen AWS CDK in Docker.
Walkthrough
Če želite implementirati to rešitev, morate najprej klonirati skladišče.
Ko klonirate repozitorij, namestite odvisnosti:
Nato uporabite naslednjo kodo za uvedbo sklada AWS CDK:
Za to rešitev morate zagotoviti izvorno vedro in izvorno predpono (lokacijo datotek, ki jih želite obdelati).
Ko je uvajanje končano, se pomaknite do konzole Step Functions, kjer bi morali videti avtomat stanja ServerlessIDPArchivePipeline
.
Odprite stran s podrobnostmi državnega avtomata in na Izvršitve izberite jeziček Začni izvedbo.
Izberite Začni izvedbo znova zagnati državni stroj.
Ko zaženete stroj stanja, lahko spremljate cevovod tako, da pogledate potek zemljevida. Videli boste an Status obdelave predmeta razdelek, kot je naslednji posnetek zaslona. Kot lahko vidite, je to zasnovano za izvajanje in sledenje, kaj je bilo uspešno in kaj neuspešno. Ta postopek se bo nadaljeval, dokler ne bodo prebrani vsi dokumenti.
S to rešitvijo bi morali biti sposobni obdelati milijone datotek v svojem računu AWS, ne da bi vas skrbelo, kako pravilno določiti, katere datoteke poslati kateremu API-ju ali poškodovane datoteke, ki ne uspejo v vašem cevovodu. Prek konzole Step Functions boste lahko svoje datoteke gledali in spremljali v realnem času.
Čiščenje
Ko je vaš cevovod končan, se lahko za čiščenje vrnete v svoj projekt in vnesete naslednji ukaz:
S tem boste izbrisali vse storitve, ki so bile nameščene za ta projekt.
zaključek
V tej objavi smo predstavili rešitev, ki omogoča preprosto pretvorbo slik dokumentov in PDF-jev v besedilne datoteke. To je ključni predpogoj za uporabo vaših dokumentov za generativno umetno inteligenco in iskanje. Če želite izvedeti več o uporabi besedila za usposabljanje ali natančno nastavitev vaših temeljnih modelov, glejte Natančno nastavite Llama 2 za ustvarjanje besedila na Amazon SageMaker JumpStart. Za uporabo z iskanjem glejte Implementirajte pametni iskalni indeks dokumentov z Amazon Texttract in Amazon OpenSearch. Če želite izvedeti več o naprednih zmožnostih obdelave dokumentov, ki jih ponujajo storitve AI AWS, glejte Smernice za inteligentno obdelavo dokumentov na AWS.
O avtorjih
Tim Condello je višji arhitekt za rešitve za umetno inteligenco (AI) in strojno učenje (ML) pri Amazon Web Services (AWS). Njegov fokus je obdelava naravnega jezika in računalniški vid. Tim uživa v sprejemanju idej strank in njihovem spreminjanju v prilagodljive rešitve.
David Girling je višji arhitekt rešitev AI/ML z več kot dvajsetletnimi izkušnjami pri oblikovanju, vodenju in razvoju podjetniških sistemov. David je del strokovne ekipe, ki se osredotoča na pomoč strankam pri učenju, inovacijah in uporabi teh zelo zmogljivih storitev z njihovimi podatki za njihove primere uporabe.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/create-a-document-lake-using-large-scale-text-extraction-from-documents-with-amazon-textract/
- :ima
- : je
- :ne
- :kje
- $GOR
- 000
- 1
- 10
- 100
- 12
- 20
- 200
- 7
- 710
- 8
- a
- Sposobna
- O meni
- dostop
- Račun
- natančno
- dodajte
- Dodatne
- Poleg tega
- napredovanje
- napredno
- Prednost
- po
- spet
- AI
- Storitve AI
- AI / ML
- vsi
- omogočajo
- omogoča
- skupaj
- že
- Prav tako
- Amazon
- Amazon EC2
- Amazon SageMaker
- Amazonovo besedilo
- Amazon Web Services
- Amazonske spletne storitve (AWS)
- znesek
- an
- analize
- in
- kaj
- API
- API-ji
- aplikacije
- uporabna
- pristop
- približno
- SE
- umetni
- Umetna inteligenca
- Umetna inteligenca (AI)
- AS
- dodeljena
- At
- avto
- samodejno
- AWS
- nazaj
- baza
- V bistvu
- BE
- bilo
- pred
- milijardah
- Bloki
- Bootstrap
- tako
- izgradnjo
- zgrajena
- poslovni
- by
- klic
- se imenuje
- klicatelja
- kliče
- CAN
- Zmogljivosti
- lahko
- primeru
- primeri
- celica
- nekatere
- spremenite
- preveriti
- Izberite
- razred
- čiščenje
- Cloud
- Koda
- baza kod
- zbirka
- komentar
- Komentiranje
- dokončanje
- dokončanje
- deli
- Izračunajte
- računalnik
- Računalniška vizija
- Konzole
- gradnjo
- vsebujejo
- Posoda
- Vsebuje
- vsebina
- naprej
- pretvorbo
- ustreza
- stroški
- bi
- Crash
- ustvarjajo
- ustvaril
- po meri
- stranka
- Stranke, ki so
- datum
- Baze podatkov
- David
- odloča
- privzeto
- odvisnosti
- razporedi
- razporejeni
- uvajanje
- opisati
- Oblikovanje
- zasnovan
- oblikovanje
- Podrobnosti
- Odkrivanje
- Ugotovite,
- določa
- razvoju
- Razvoj
- drugačen
- porazdeljena
- Lučki delavec
- dokument
- Dokumenti
- Ne
- navzdol
- 2
- vsak
- prej
- bodisi
- omogoča
- konec koncev
- konča
- Vnesite
- Podjetje
- Vpis
- okolja
- enako
- dogodki
- Tudi vsak
- Primer
- presega
- izvedba
- obstaja
- pričakovanja
- pričakovanja
- izkušnje
- razširiti
- ekstrakt
- pridobivanje
- ni uspelo
- ne
- Napaka
- Feature
- Nekaj
- Področja
- file
- datoteke
- finančna
- finančne storitve
- Najdi
- konča
- prva
- prvič
- prilagodljiv
- Osredotočite
- Osredotoča
- sledili
- po
- sledi
- za
- Obrazci
- je pokazala,
- Fundacija
- Okvirni
- iz
- funkcija
- funkcionalnost
- funkcije
- Gain
- splošno
- ustvarja
- generacija
- generativno
- Generativna AI
- dobili
- Go
- Navodila
- se zgodi
- Imajo
- zdravstveno varstvo
- pomoč
- tukaj
- zelo
- njegov
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- i
- ID
- Ideje
- identiteta
- ID-ji
- if
- ponazarja
- slike
- izvajati
- in
- vključujejo
- Vključno
- Povečajte
- Indeks
- industrij
- vodilne
- Podatki
- Infrastruktura
- na začetku
- sproži
- inovacije
- vhod
- vpogledi
- namestitev
- nameščen
- primer
- Intelligence
- Inteligentna
- Inteligentna obdelava dokumentov
- interakcijo
- v
- inventar
- IT
- Izdelkov
- ITS
- Job
- jpg
- json
- Ključne
- Jezero
- Lane
- jezik
- velika
- obsežne
- vodi
- UČITE
- učenje
- pustite
- levo
- manj
- kot
- Seznam
- Llama
- nahaja
- kraj aktivnosti
- zaklenjeno
- Logika
- več
- si
- stroj
- strojno učenje
- Glavne
- Znamka
- IZDELA
- upravljanje
- upravlja
- več
- map
- Povečajte
- Srečati
- omenjeno
- metapodatki
- Metoda
- Metode
- Meritve
- milijoni
- Minute
- ML
- Model
- modeli
- monitor
- več
- Najbolj
- premikanje
- več
- morajo
- Ime
- Imenovan
- Imena
- naravna
- Obdelava Natural Language
- Krmarjenje
- Nimate
- potrebna
- Novo
- Naslednja
- št
- Upoštevajte
- prenosnik
- zdaj
- Številka
- predmet
- predmeti
- of
- off
- ponujen
- on
- ONE
- deluje
- or
- orkestracijo
- Ostalo
- drugače
- naši
- ven
- izhod
- več
- lastne
- pakirani
- Stran
- strani
- del
- za
- Dovoljenja
- kramp
- plinovod
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Točka
- politike
- naseljeno
- Prispevek
- potencial
- potencialno
- predstavljeni
- preprečiti
- problem
- Postopek
- Procesi
- obravnavati
- proizvodnjo
- Projekt
- pravilno
- zagotavljajo
- če
- zagotavlja
- javnega
- dal
- Python
- najhitrejši
- hitro
- Surovi
- Preberi
- pripravljen
- pravo
- v realnem času
- Priporočamo
- priporočeno
- zapis
- evidence
- glejte
- reference
- reference
- ponovite
- poročilo
- Skladišče
- zahteva
- obvezna
- Zahteve
- zahteva
- odporno
- povzroči
- Rezultati
- vloga
- ROW
- Run
- tek
- deluje
- varna
- Varnost
- sagemaker
- Enako
- Shrani
- razširljive
- Lestvica
- script
- SDK
- Iskalnik
- drugi
- Oddelek
- oddelki
- sektor
- glej
- izberite
- pošljite
- višji
- poslan
- Zaporedje
- strežnik
- Brez strežnika
- Storitev
- Storitve
- Zasedanje
- nastavite
- shouldnt
- ugašati
- Podoben
- Enostavno
- preprosto
- Velikosti
- pametna
- So
- Rešitev
- rešitve
- nekaj
- vir
- span
- napetost
- specialist
- določeno
- zavrtel
- sveženj
- Začetek
- začel
- Začetek
- Država
- Status
- Korak
- stop
- ustavil
- ustavljanje
- shranjevanje
- trgovina
- shranjeni
- trgovine
- shranjevanje
- naravnost
- String
- strukturirano
- studio
- uspešno
- taka
- Preverite
- sistemi
- miza
- Bodite
- sprejeti
- meni
- ob
- skupina
- Tehnologija
- terminal
- Testiranje
- besedilo
- kot
- da
- O
- informacije
- Vir
- Država
- njihove
- Njih
- POTEM
- Tukaj.
- te
- jih
- ta
- tisti,
- 3
- skozi
- pretočnost
- Tim
- čas
- do
- proti
- tps
- sledenje
- Vlak
- Transakcije
- Obračalni
- na ključ
- dva
- ne morem
- pod
- Nepričakovana
- dokler
- posodobljeno
- uporaba
- primeru uporabe
- uporablja
- uporabo
- uporabiti
- izkorišča
- spremenljivka
- različnih
- različica
- Vizija
- Počakaj
- želeli
- je
- Watch
- način..
- we
- web
- spletne storitve
- so bili
- Kaj
- kdaj
- ki
- celoti
- bo
- z
- v
- brez
- delo
- potek dela
- zaskrbljujoče
- bi
- Zavito
- pisati
- let
- Vi
- Vaša rutina za
- zefirnet