{"id":2770,"date":"2025-05-04T22:56:05","date_gmt":"2025-05-04T20:56:05","guid":{"rendered":"https:\/\/www.giuseppebriganti.it\/wordpress\/?p=2770"},"modified":"2025-05-22T23:03:59","modified_gmt":"2025-05-22T21:03:59","slug":"ia-e-avvocati-8-parsing-dei-pdf-legali-con-ocr-e-pulizia-del-testo","status":"publish","type":"post","link":"https:\/\/www.giuseppebriganti.it\/wordpress\/2025\/05\/ia-e-avvocati-8-parsing-dei-pdf-legali-con-ocr-e-pulizia-del-testo\/","title":{"rendered":"IA e Avvocati (8): parsing dei PDF legali con OCR e pulizia del testo"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/tag\/ia-e-avvocati\/\">Intelligenza artificiale e Avvocati<\/a><\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8. Parsing dei PDF legali con OCR e pulizia del testo<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><strong>Che cos\u2019\u00e8 il parsing?<\/strong><\/p>\n\n\n\n<p>Nel contesto dell\u2019elaborazione dei documenti legali, il termine <em>parsing<\/em> indica l\u2019intero processo di analisi e trasformazione di un documento testuale in una forma strutturata, adatta a essere elaborata da un modello linguistico o un motore RAG. Le fasi principali del parsing sono:<\/p>\n\n\n\n<ol>\n<li><strong>Estrazione del contenuto<\/strong>: recupero del testo dal documento, sia esso digitale (PDF nativo) o immagine (via OCR).<\/li>\n\n\n\n<li><strong>Pulizia del testo<\/strong>: rimozione di elementi non rilevanti (es. intestazioni, watermark, firme, numeri pagina).<\/li>\n\n\n\n<li><strong>Segmentazione<\/strong>: suddivisione del testo in blocchi logici (<em>chunk<\/em>), utili per l\u2019analisi semantica e l\u2019indicizzazione.<\/li>\n<\/ol>\n\n\n\n<p>Una buona <em>pipeline<\/em> di parsing \u00e8 la base per costruire sistemi intelligenti in grado di comprendere e sfruttare documenti legali complessi.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Introduzione<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><strong>Nota terminologica<\/strong><\/p>\n\n\n\n<p><strong>OCR (Optical Character Recognition)<\/strong>: tecnologia che consente di convertire immagini contenenti testo (es. PDF scannerizzati) in testo digitale modificabile.<\/p>\n\n\n\n<p><strong>NLP (Natural Language Processing)<\/strong>: insieme di tecniche e strumenti che permettono ai computer di comprendere, analizzare e generare il linguaggio umano in modo utile, ad esempio per classificare, riassumere o cercare contenuti giuridici.<\/p>\n<\/blockquote>\n\n\n\n<p>Nell\u2019ambito dell\u2019<a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/2025\/04\/intelligenza-artificiale-e-avvocati-sistema-rag\/\">adozione di sistemi RAG (Retrieval-Augmented Generation) locali negli studi legali<\/a>, una delle fasi pi\u00f9 critiche riguarda la <strong>preparazione dei dati<\/strong>, in particolare l\u2019estrazione del testo da documenti PDF.<\/p>\n\n\n\n<p>I documenti legali possono essere sia in formato digitale nativo (PDF generati da Word o da software gestionali), sia scannerizzati come immagini.<\/p>\n\n\n\n<p>La capacit\u00e0 di processare PDF in modo accurato rappresenta dunque un passaggio essenziale per alimentare un <a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/2025\/04\/ia-e-avvocati\/\">sistema basato su LLM<\/a>.<\/p>\n\n\n\n<p>Questo ottavo post ci guida passo dopo passo nel parsing dei PDF legali, distinguendo tra documenti nativi e scannerizzati.<\/p>\n\n\n\n<p>Verranno illustrati strumenti come Tesseract per l\u2019OCR, PyMuPDF e pdfminer per l\u2019estrazione del testo, oltre a tecniche di pulizia del testo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Esempi di parsing<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Estrazione di testo da PDF nativi<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><strong>Spiegazione tecnica<\/strong><\/p>\n\n\n\n<p>In questo esempio di parsing vengono mostrati due strumenti per l\u2019estrazione del testo da PDF digitali nativi, cio\u00e8 file generati digitalmente (non scannerizzati).<\/p>\n\n\n\n<ul>\n<li><code>PyMuPDF<\/code> (fitz): consente di aprire un PDF, leggere ogni pagina e ricavare il testo in modo rapido. La funzione <code>get_text()<\/code> estrae tutto il contenuto testuale della pagina.<\/li>\n\n\n\n<li><code>pdfminer.six<\/code>: \u00e8 una libreria pi\u00f9 sofisticata per casi in cui il <em>layout<\/em> del documento \u00e8 complesso (colonne, tabelle, strutture giuridiche complesse). La funzione <code>extract_text()<\/code> estrae tutto il testo del PDF in una sola chiamata.<\/li>\n<\/ul>\n\n\n\n<p>Entrambi gli strumenti funzionano in ambiente Windows, sono <em>open source<\/em> e integrabili in flussi Python automatizzati per alimentare un sistema RAG.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Guida pratica: installazione librerie, creazione ed esecuzione script python<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Installazione delle librerie con pip<\/h4>\n\n\n\n<p>Come gi\u00e0 illustrato nei post <a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/2025\/04\/ia-e-avvocati-sistema-rag-locale\/\">6<\/a> e <a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/2025\/04\/ia-e-avvocati-7-utilizzare-un-llm-locale-con-ollama\/\">7<\/a>:<\/p>\n\n\n\n<ol>\n<li>Apri Visual Studio Code.<\/li>\n\n\n\n<li>Apri la cartella del progetto che contiene il file python e l\u2019ambiente virtuale.<\/li>\n\n\n\n<li>Apri il terminale integrato (dal menu Visualizza &gt; Terminale).<\/li>\n\n\n\n<li>Attiva l\u2019ambiente virtuale.<\/li>\n\n\n\n<li>Installa le librerie necessarie eseguendo il comando: <code>pip install pymupdf pdfminer.six<\/code><\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Creazione e salvataggio dello script Python<\/h4>\n\n\n\n<ol>\n<li>All\u2019interno della cartella del progetto, crea un nuovo file chiamato <code>estrai_testo.py<\/code>.<\/li>\n\n\n\n<li>Copia e incolla il codice python di esempio che trovi di seguito nel file e salvalo.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Esecuzione dello script Python<\/h4>\n\n\n\n<p>Una volta creato il file .py con l&#8217;esempio, nel terminale di VS Code, esegui lo script con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python estrai_testo.py\n<\/code><\/pre>\n\n\n\n<p>Questo comando:<\/p>\n\n\n\n<ul>\n<li>eseguir\u00e0 lo script,<\/li>\n\n\n\n<li>aprir\u00e0 il file <code>contratto.pdf<\/code> (che deve trovarsi <em>nella stessa cartella<\/em> del file estrai_testo.py che hai creato),<\/li>\n\n\n\n<li>estrarr\u00e0 il testo dal PDF, lo stamper\u00e0 nel terminale e lo salver\u00e0 anche in un file di testo.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Esempio di parsing con PyMuPDF (script python):<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import fitz  # PyMuPDF\n\n# Apri il file PDF da cui vuoi estrarre il testo\ndoc = fitz.open(\"contratto.pdf\")\n\n# Scorri tutte le pagine del documento\nwith open(\"testo_estratto.txt\", \"w\", encoding=\"utf-8\") as f:\n  for page in doc:\n      # Estrai il testo dalla pagina corrente\n      text = page.get_text()\n      # Stampa il contenuto testuale della pagina\n      print(text)\n      # Crea un file con il testo estratto\n      f.write(text)\n\n# Chiudi il documento per liberare risorse\ndoc.close()\n<\/code><\/pre>\n\n\n\n<p><strong>Cosa fa questo codice:<\/strong><\/p>\n\n\n\n<ul>\n<li>Apre il file <code>contratto.pdf<\/code>.<\/li>\n\n\n\n<li>Estrae il testo da ogni pagina usando <code>get_text()<\/code>.<\/li>\n\n\n\n<li>Stampa il contenuto sul terminale e lo salva in un file .txt.<\/li>\n\n\n\n<li>Infine, chiude il file per buona prassi.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Esempio di parsing con pdfminer:<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from pdfminer.high_level import extract_text\n\ntext = extract_text(\"contratto.pdf\")\nprint(text)\nwith open(\"testo_estratto.txt\", \"w\", encoding=\"utf-8\") as f:\n    f.write(text)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">OCR su PDF scannerizzati con Tesseract<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Perch\u00e9 \u00e8 necessario<\/h4>\n\n\n\n<p>Molti atti giudiziari, contratti firmati o documenti arrivano in formato immagine. Senza OCR, questi documenti restano inaccessibili agli LLM e inutilizzabili nei processi NLP.<\/p>\n\n\n\n<p>Per l&#8217;installazione delle librerie necessarie e la creazione del file .py dello script python seguire il medesimo procedimento descritto sopra.<\/p>\n\n\n\n<p><strong>Installazione di Tesseract OCR su Windows con lingua italiana<\/strong><\/p>\n\n\n\n<p>Per utilizzare Tesseract OCR in italiano su Windows, segui questi passaggi:<\/p>\n\n\n\n<p><strong>1.<\/strong> Scarica l\u2019installer di Tesseract<\/p>\n\n\n\n<p>Vai alla pagina ufficiale dei rilasci di Tesseract per Windows su GitHub:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/UB-Mannheim\/tesseract\/wiki\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/UB-Mannheim\/tesseract\/wiki<\/a><\/p>\n\n\n\n<p>Scarica la versione pi\u00f9 recente dell\u2019installer (tesseract-ocr-w64-setup.exe) e avviala. Durante l\u2019installazione, puoi scegliere le lingue aggiuntive da installare: assicurati di selezionare anche \u201cItalian\u201d.<\/p>\n\n\n\n<p><strong>Installazione delle librerie necessarie<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install pymupdf pytesseract Pillow\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Esempio pratico con PyMuPDF e Tesseract (OCR)<\/h4>\n\n\n\n<p>Questo esempio consente di eseguire l\u2019OCR direttamente su ogni pagina di un PDF scannerizzato, utilizzando PyMuPDF per convertire le pagine in immagini e Tesseract per estrarre il testo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import fitz  # PyMuPDF\nimport pytesseract\nfrom PIL import Image\nfrom io import BytesIO\n\n# Percorso all'eseguibile di Tesseract (modificare se necessario)\npytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'\n\n# Apri il file PDF scannerizzato\npdf_document = fitz.open('documento_scannerizzato.pdf')\n\n# Scorri ogni pagina del PDF\nwith open(\"testo_estratto.txt\", \"w\", encoding=\"utf-8\") as f:\n  for i, page in enumerate(pdf_document):\n      # Crea una rappresentazione raster della pagina (300 DPI per buona qualita' OCR)\n      pix = page.get_pixmap(dpi=300)\n\n      # Converte l'immagine in oggetto compatibile con PIL\n      img = Image.open(BytesIO(pix.tobytes(\"png\")))\n\n      # Applica OCR con lingua italiana\n      text = pytesseract.image_to_string(img, lang='ita')\n\n      # Stampa il testo estratto\n      print(f\"--- Pagina {i+1} ---\")\n      print(text)\n      # Salva su file il testo estratto\n      f.write(text)\n\npdf_document.close()\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Cosa fa questo codice<\/h4>\n\n\n\n<ul>\n<li>Apre il PDF con PyMuPDF (nell&#8217;esempio il file documento_scannerizzato.pdf che si trova nella stessa cartella del file .py)<\/li>\n\n\n\n<li>Converte ogni pagina in immagine ad alta risoluzione<\/li>\n\n\n\n<li>Usa Tesseract per eseguire OCR sull\u2019immagine<\/li>\n\n\n\n<li>Stampa il testo riconosciuto da ogni pagina e lo salva in un file .txt nella medesima cartella.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Parsing dei PDF legali: pulizia del testo<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\">\n<p><strong>Che cos\u2019\u00e8 la pulizia del testo?<\/strong><\/p>\n\n\n\n<p>La pulizia del testo (<em>text cleaning<\/em>) \u00e8 il processo con cui si rimuovono elementi indesiderati da un testo grezzo, come intestazioni ripetute, firme, numeri di pagina, <em>watermark<\/em> o errori derivanti da OCR. L\u2019obiettivo \u00e8 ottenere un testo coerente, leggibile e pronto per l\u2019analisi automatica.<\/p>\n\n\n\n<p>In ambito legale, la pulizia \u00e8 fondamentale per evitare che rumore testuale interferisca con la comprensione semantica da parte di modelli NLP o motori RAG.<\/p>\n\n\n\n<p>Un testo pulito migliora l\u2019accuratezza delle risposte generate, la pertinenza dei documenti recuperati e l\u2019efficacia delle sintesi automatiche.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">Obiettivi principali della pulizia<\/h4>\n\n\n\n<ul>\n<li>Eliminare intestazioni, numeri di pagina, <em>watermark<\/em><\/li>\n\n\n\n<li>Uniformare gli spazi e correggere gli errori OCR<\/li>\n\n\n\n<li>Conservare riferimenti numerici rilevanti (es. articoli di legge, commi, date)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Funzione di pulizia avanzata<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code># -*- coding: utf-8 -*-\n\nimport re\nimport unicodedata\n\ndef pulisci_testo_legale(testo):\n    # Normalizza caratteri Unicode (es. accenti strani da OCR)\n    testo = unicodedata.normalize(\"NFKC\", testo)\n    # Rimuove intestazioni tipo \"Studio Legale Rossi Associati\"\n    testo = re.sub(r'Studio\\s+Legale&#91;\\w\\s&amp;\\.]*', '', testo, flags=re.IGNORECASE)\n    # Rimuove numeri di pagina \"Pagina X di Y\"\n    testo = re.sub(r'(?i)pagina\\s+\\d+\\s+di\\s+\\d+', '', testo)\n    # Rimuove etichette come &#91;BOZZA], &#91;NON UFFICIALE], &#91;RISERVATA]\n    testo = re.sub(r'\\&#91;?\\b(?:BOZZA|NON\\s+UFFICIALE|RISERVATA)\\b\\]?', '', testo, flags=re.IGNORECASE)\n    # Rimuove firme tipo \"Avv. Mario Rossi\" (anche tutto maiuscolo)\n    testo = re.sub(r'Avv\\.\\s+&#91;A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]+(?:\\s+&#91;A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]+)+', '', testo, flags=re.IGNORECASE)\n    # Riduce spazi multipli a uno solo\n    testo = re.sub(r'&#91; \\t]{2,}', ' ', testo)\n    # Riduce righe vuote multiple a una sola\n    testo = re.sub(r'\\n\\s*\\n+', '\\n\\n', testo)\n    # Rimuove spazi all'inizio e alla fine\n    return testo.strip()\n  \n# ESEMPIO DI UTILIZZO\ntesto_originale = \"\"\"\nStudio Legale Rossi Associati\nPAGINA 1 DI 5\n\nCopia riservata al Cliente\n&#91;BOZZA NON UFFICIALE] \n\nIl contratto viene definito dall'art. 1321 c.c.\ncome l'accordo di  due  o  pi\u00f9  parti  per  costituire,\nregolare o estinguere tra loro un rapporto giuridico patrimoniale...\n  \nData: 4 maggio 2025\n\nAvv. Maria Bianchi\n\"\"\"\n\ntesto_pulito = pulisci_testo_legale(testo_originale)\n\nprint(\"TESTO ORIGINALE:\")\nprint(testo_originale)\n\nprint(\"\\nTESTO PULITO:\")\nprint(testo_pulito)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusione<\/h3>\n\n\n\n<p>Il parsing accurato dei PDF legali \u00e8 un passaggio fondamentale per costruire un sistema RAG realmente efficace.<\/p>\n\n\n\n<p>Saper distinguere tra documenti nativi e scannerizzati, utilizzare strumenti adeguati e pulire correttamente i testi consente di ottenere basi dati affidabili per la ricerca giuridica, la sintesi e l\u2019elaborazione automatica.<\/p>\n\n\n\n<p>Nel prossimo post vedremo come costruire un semplice motore RAG locale di esempio collegando questi testi a un LLM tramite FAISS e LangChain.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright\"><a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-content\/uploads\/2025\/04\/logo-tech.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-content\/uploads\/2025\/04\/logo-tech-150x150.png\" alt=\"\" class=\"wp-image-2760\" srcset=\"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-content\/uploads\/2025\/04\/logo-tech-150x150.png 150w, https:\/\/www.giuseppebriganti.it\/wordpress\/wp-content\/uploads\/2025\/04\/logo-tech-300x300.png 300w, https:\/\/www.giuseppebriganti.it\/wordpress\/wp-content\/uploads\/2025\/04\/logo-tech.png 512w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/figure><\/div>\n\n\n<p><strong>Per un aiuto e per approfondire<\/strong><\/p>\n\n\n\n<p>Per un aiuto e per approfondire i temi dell\u2019intelligenza artificiale nello studio legale, del&nbsp;<em>legal tech&nbsp;<\/em>e del&nbsp;<em>legal design&nbsp;<\/em>\u00e8 online il GPT&nbsp;<strong><a href=\"https:\/\/chatgpt.com\/g\/g-bGqFiNPWp-iusreporter-tech\" target=\"_blank\" rel=\"noreferrer noopener\">Iusreporter.tech<\/a>&nbsp;<\/strong><em>(link esterno, richiede ChatGPT)<\/em><\/p>\n\n\n\n<p>Per gli altri articoli pubblicati su questo blog sul tema:<br><strong><a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/tag\/ia-e-avvocati\/\">Intelligenza artificiale e Avvocati<\/a><\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><em>Scritto con l\u2019aiuto di&nbsp;<a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/iusreporter-it-il-motore-di-ricerca-giuridico\/\">Iusreporter<\/a>, il tuo assistente per la ricerca giuridica online&nbsp;<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/www.giuseppebriganti.it\/wordpress\/diritto-dellimmigrazione\/\">Studio legale Avvocato Giuseppe Briganti<\/a><\/p>\n\n\n\n<p>Pesaro \u2013 Urbino<\/p>\n\n\n\n<p><em>Post aggiornato alla data di pubblicazione<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&#x1f4c4; Disclaimer<\/h2>\n\n\n\n<p><em>Gli script Python e i contenuti di questo testo sono forniti esclusivamente a scopo informativo, didattico e sperimentale in ambienti di test controllati. Non costituiscono consulenza legale o tecnica e non sostituiscono il parere di un professionista qualificato.<\/em><\/p>\n\n\n\n<p><em>L\u2019autore declina ogni responsabilit\u00e0 per eventuali errori, omissioni, malfunzionamenti, danni diretti o indiretti, incidentali, consequenziali o di altro tipo derivanti dall\u2019uso, dall\u2019uso improprio o dall\u2019impossibilit\u00e0 di utilizzo degli script o delle informazioni contenute nel presente testo. Gli script sono forniti \u201ccos\u00ec come sono\u201d (AS IS), senza garanzie esplicite o implicite, incluse, ma non limitate a, garanzie di commerciabilit\u00e0, idoneit\u00e0 a uno scopo particolare o assenza di violazioni.<\/em><\/p>\n\n\n\n<p><em>L\u2019utilizzo degli strumenti \u00e8 sotto la piena responsabilit\u00e0 dell\u2019utente, che \u00e8 tenuto a verificarne, in particolare:<\/em><\/p>\n\n\n\n<ul>\n<li><em>la correttezza tecnica e funzionale,<\/em><\/li>\n\n\n\n<li><em>la conformit\u00e0 alle normative vigenti, incluse, a titolo esemplificativo, l&#8217;AI Act, il GDPR, il Codice Deontologico Forense,<\/em><\/li>\n\n\n\n<li><em>il rispetto delle licenze delle librerie e dei componenti e software di terze parti eventualmente utilizzati, inclusi quelli distribuiti con licenze open source.<\/em><\/li>\n<\/ul>\n\n\n\n<p><em>Gli script non sono progettati n\u00e9 validati per l\u2019uso in ambienti produttivi o per l\u2019elaborazione di dati personali. Qualsiasi utilizzo in tali contesti \u00e8 esclusiva responsabilit\u00e0 dell\u2019utente, che deve adottare le opportune misure di sicurezza e valutare l\u2019impatto normativo.<\/em><\/p>\n\n\n\n<p><em>Gli script sono stati testati su Python 3.10 in ambiente Windows. Non \u00e8 garantita la compatibilit\u00e0 con versioni diverse del linguaggio o con altri sistemi operativi. L\u2019autore non fornisce assistenza tecnica, aggiornamenti periodici o correzione dei malfunzionamenti.<\/em><\/p>\n\n\n\n<p><em>Tutti i contenuti di questo ebook, inclusi i testi e il codice sorgente, sono protetti dal diritto d\u2019autore ai sensi della Legge 22 aprile 1941, n. 633 e successive modificazioni. \u00c8 vietata la riproduzione, distribuzione, pubblicazione, comunicazione o modifica, totale o parziale, in qualsiasi forma, dei contenuti senza autorizzazione scritta dell\u2019autore, salvo espressa indicazione contraria.<\/em><\/p>\n\n\n\n<p><em>L\u2019uso di questo testo e degli script in esso contenuti implica l\u2019accettazione integrale del presente disclaimer. Se non si accettano tali condizioni, si prega di non utilizzare il materiale fornito.<\/em><\/p>\n\n\n\n<p><em>Eventuali errori, osservazioni o segnalazioni possono essere comunicati all\u2019autore, che si riserva di valutarli senza alcun obbligo di risposta o correzione.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intelligenza artificiale e Avvocati 8. Parsing dei PDF legali con OCR e pulizia del testo Introduzione Nota terminologica OCR (Optical Character Recognition): tecnologia che consente di convertire immagini contenenti testo (es. PDF scannerizzati) in testo digitale modificabile. NLP (Natural Language Processing): insieme di tecniche e strumenti che permettono ai computer di comprendere, analizzare e generare [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2772,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[190,215,219],"_links":{"self":[{"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/posts\/2770"}],"collection":[{"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/comments?post=2770"}],"version-history":[{"count":6,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/posts\/2770\/revisions"}],"predecessor-version":[{"id":2910,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/posts\/2770\/revisions\/2910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/media\/2772"}],"wp:attachment":[{"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/media?parent=2770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/categories?post=2770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.giuseppebriganti.it\/wordpress\/wp-json\/wp\/v2\/tags?post=2770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}