<link rel="stylesheet" href="/assets/fonts/jetbrains-mono/jetbrains-mono.css" />
All posts

Si ndërtova një laborator me 13 mjete PDF dhe IA që punojnë së bashku

Laboratori i kësaj faqeje lindi nga një nevojë konkrete: më duhej një bankë prove për teknologjitë që përdor me klientët, dhe doja që të ishte i dobishëm edhe për kë punon çdo ditë me dokumente. Sot ka 13 mjete — shikues, editor PDF, OCR, skaner, përkthim, përmbledhje, kërkim PDF-sh ligjore, slide me IA dhe të tjera — në shtatë gjuhë. Ky është tregimi se si e ndërtova.

Problemi dhe kufizimet

  • Kosto të ulëta: një backend NestJS në një shërbim të vogël cloud, pa infrastrukturë të dedikuar.
  • Privatësia: kur është e mundur, skedarët nuk duhet të largohen nga pajisja e përdoruesit.
  • Shtatë gjuhë dhe SEO: çdo mjet duhet të gjendet në Google në çdo gjuhë.
  • Mjete anonime: pa regjistrim të detyrueshëm, pra me mbrojtje kundër abuzimeve.

Zgjedhja 1: në shfletues kur mundet, në server kur duhet

Shikuesi, editori PDF (bashkim, ndarje, rrotullim, filigran) dhe faza e parë e OCR-së punojnë plotësisht në shfletues, me pdf.js dhe pdf-lib: dokumenti nuk ngarkohet kurrë. Serveri hyn në lojë vetëm kur është e pashmangshme: thirrjet ndaj modeleve të IA-së, OCR i rëndë me Tesseract, konvertimet e formateve.

Zgjedhja 2: fillimisht teksti, pastaj OCR-ja

Çdo faqe pyetet fillimisht për shtresën e saj të tekstit. Nën 40 karaktere e konsideroj skanim dhe e dërgoj në OCR; i njëjti prag vlen në shfletues dhe në server, kështu që të dyja rrugët japin rezultate koherente. OCR-ja është e ngadaltë, ndaj ka një kufi prej 20 faqesh për dokument.

Zgjedhja 3: kufij të deklaruar, jo të fshehur

Dokumentet e gjata ndahen në blloqe për IA-në. Përtej 15 blloqeve preferoj ta shkurtoj dokumentin dhe t'ia them përdoruesit, sesa të shpërthejnë kohët dhe kostot për një skedar patologjik:

// Hard cap on blocks per document: beyond it the file is
// truncated honestly instead of exploding latency and cost.
const chunks = allChunks.slice(0, this.MAX_CHUNKS); // 15
const truncated = allChunks.length > this.MAX_CHUNKS;
// "truncated" goes back to the UI: the user is told, not surprised

Zgjedhja 4: mjete të lidhura nga një workspace

Vlera e vërtetë qëndron te zinxhirët: skaner → OCR → përkthim, kërkim → përmbledhje. Prandaj shtova një workspace që ia kalon rezultatin e një mjeti mjetit tjetër pa shkarkuar dhe ringarkuar skedarë. E kam treguar në detaje në këtë artikull.

Zgjedhja 5: kuotat e IA-së

Mjetet anonime dhe thirrjet ndaj modeleve të IA-së janë një kombinim i rrezikshëm për buxhetin. Përveç kufirit për minutë futa një tavan ditor për çdo adresë IP dhe një buxhet global ditor tokenësh, me një çelës emergjence. Pa to, një skript i vetëm automatik mund të konsumonte brenda një ore buxhetin e një muaji.

Gabimet nga të cilat mësova më shumë

  • Kokat e mia të sigurisë bllokonin parapamjen time. Parazgjedhjet e Helmet ndalojnë shfaqjen e përgjigjeve të backend-it në një iframe të një origjine tjetër: m'u desh të hap një përjashtim të synuar, vetëm në atë rrugë dhe vetëm për frontend-in tim.
  • Në telefona parapamja e PDF-së shfaqte vetëm faqen e parë. Shikuesi vendas i shfletuesve celularë shpesh bën kështu: në celular tani i renderizoj faqet me pdf.js, përmes një proxy-je me një listë të mbyllur domenesh të lejuara për të shmangur abuzimet.
  • Burimet duhen verifikuar drejtpërdrejt. Për kërkimin e PDF-ve ligjore mbajta Internet Archive, Project Gutenberg, arXiv dhe Europe PMC; burime të tjera premtuese u hodhën poshtë sepse, të provuara vërtet, kthenin faqe HTML e jo PDF.
  • Tituj në një gjuhë të vetme. Për javë të tëra faqet e mjeteve kishin tituj dhe përshkrime fikse, pothuajse të gjitha në anglisht: versionet në gjuhët e tjera ishin praktikisht të padukshme për Google.

Rezultati

Trembëdhjetë mjete në shtatë gjuhë, me faqe të prerenderizuara për çdo gjuhë dhe pjesën më të madhe të përpunimit në shfletues. Por rezultati më i dobishëm është tjetër: një repertor zgjidhjesh të provuara — menaxhimi i PDF-ve, OCR, kuotat e IA-së, proxy të sigurt, i18n — që i ripërdor në projektet për klientët.


Në përmbledhje

Ndërtimi i laboratorit më mësoi tri gjëra: të përpunosh në shfletues gjithçka që mundesh, të deklarosh kufijtë në vend që t'i fshehësh dhe të mbrosh çdo burim që kushton para. Nëse ke një projekt që punon me dokumente ose IA, më shkruaj: ka shumë mundësi që një problem të ngjashëm ta kem përballuar tashmë.

💬 Shënime nga lexuesit

0 shënime

Shkruaj një shënim

Ndaj mendimin tënd, një sugjerim ose një kompliment

Shënimet e fundit

Ende asnjë shënim. Bëhu i pari që komenton!