{"id":75832,"date":"2024-01-10T13:54:31","date_gmt":"2024-01-10T12:54:31","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=75832&#038;preview=true&#038;preview_id=75832"},"modified":"2024-01-12T16:08:25","modified_gmt":"2024-01-12T15:08:25","slug":"python-ocr","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/","title":{"rendered":"Come creare una propria API OCR in Python"},"content":{"rendered":"<p>L&#8217;estrazione di testo dalle immagini \u00e8 un problema molto diffuso nell&#8217;ingegneria del software. Il riconoscimento ottico dei caratteri (OCR) \u00e8 una tecnologia pionieristica ampiamente utilizzata per risolvere questo problema. Grazie alla sua capacit\u00e0 di trasformare le immagini contenenti testo in dati leggibili dalla macchina, l&#8217;OCR ha rivoluzionato diversi settori, dall&#8217;automazione dell&#8217;elaborazione dei documenti alla traduzione linguistica.<\/p>\n<p>Sebbene esistano soluzioni OCR commerciali, la creazione di una propria API OCR in Python, un linguaggio di programmazione versatile e potente, offre diversi vantaggi, tra cui la personalizzazione, il controllo sulla privacy dei dati e il potenziale risparmio economico.<\/p>\n<p>Questa guida mostra come creare la propria API OCR utilizzando Python. Esploreremo le librerie, le tecniche e le considerazioni necessarie per sviluppare un&#8217;API OCR efficace, per poter sfruttare al meglio la potenza dell&#8217;OCR per le nostre applicazioni.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Prerequisiti<\/h2>\n<p>Per seguirci, \u00e8 necessario avere una conoscenza di base di Python e Flask e una copia locale di Python installata sul sistema.<\/p>\n<h2>Creare l&#8217;API OCR<\/h2>\n<p>In questa guida impareremo a costruire un&#8217;applicazione Flask che permetta agli utenti di caricare le immagini attraverso un endpoint POST, che viene poi caricato utilizzando <a href=\"https:\/\/pypi.org\/project\/Pillow\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pillow<\/a> ed elaborato utilizzando il wrapper <a href=\"https:\/\/github.com\/madmaze\/pytesseract\" target=\"_blank\" rel=\"noopener noreferrer\">PyTesseract<\/a> (per il motore OCR di <a href=\"https:\/\/github.com\/tesseract-ocr\/tesseract\" target=\"_blank\" rel=\"noopener noreferrer\">Tesseract<\/a> ). Infine, restituisce il testo estratto come risposta alla richiesta.<\/p>\n<p>Si pu\u00f2 personalizzare ulteriormente questa API per fornire opzioni come la classificazione basata su modelli (per estrarre le voci delle fatture, gli input dei moduli fiscali, ecc.<\/p>\n<p>Per iniziare, creiamo una nuova directory per il nostro progetto. Quindi, creiamo un nuovo ambiente virtuale nella cartella eseguendo questi comandi:<\/p>\n<pre><code class=\"\u201dlanguage-bash\u201d\">python3 -m venv env\nsource env\/bin\/activate<\/code><\/pre>\n<p>Successivamente, installiamo Flask, PyTesseract, Gunicorn e Pillow eseguendo il comando:<\/p>\n<pre><code class=\"language-bash\">pip3 install pytesseract flask pillow gunicorn<\/code><\/pre>\n<p>Una volta installati questi programmi, dovremo installare il motore OCR Tesseract sul computer host. Le istruzioni per l&#8217;installazione di Tesseract variano a seconda del sistema operativo host, e possiamo trovare quelle pi\u00f9 appropriate <a href=\"https:\/\/tesseract-ocr.github.io\/tessdoc\/Installation.html\" target=\"_blank\" rel=\"noopener noreferrer\">qui<\/a>.<\/p>\n<p>Ad esempio, su MacOS, possiamo installare Tesseract utilizzando <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew<\/a> eseguendo questo comando:<\/p>\n<pre><code class=\"language-bash\">brew install tesseract<\/code><\/pre>\n<p>Una volta fatto questo, il wrapper PyTesseract sar\u00e0 in grado di comunicare con il motore OCR e di elaborare le richieste OCR.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Questo funziona solo nell&#8217;ambiente di sviluppo. Quando distribuiamo l&#8217;applicazione su una piattaforma di hosting remota come Kinsta, dovremo ripetere questa operazione (anche se in modo diverso, come richiesto dalla piattaforma di hosting &#8211; lo vedremo pi\u00f9 avanti).<\/p>\n<\/aside>\n\n<p>Ora siamo pronti a scrivere l&#8217;applicazione Flask. Creiamo una nuova directory chiamata <strong>ocrapi<\/strong> e un nuovo file in questa directory con il nome <strong>main.py. <\/strong>Salviamo i contenuti qui sotto:<\/p>\n<pre><code class=\"language-python\">from flask import Flask, request, jsonify\nfrom PIL import Image\nimport pytesseract\n\napp = Flask(__name__)\n\n@app.route('\/ocr', methods=['POST'])\ndef ocr_process():\n    if request.method == 'POST':\n        image_file = request.files['image']\n        image_data = Image.open(image_file)\n\n        # Perform OCR using PyTesseract\n        text = pytesseract.image_to_string(image_data)\n\n        response = {\n            'status': 'success',\n            'text': text\n        }\n\n        return jsonify(response)<\/code><\/pre>\n<p>Il codice precedente crea un&#8217;applicazione Flask di base che ha un unico endpoint:<code>\/ocr<\/code>. Quando inviamo una richiesta POST a questo endpoint con un file immagine, l&#8217;applicazione estrae il file, utilizza il wrapper <code>pytesseract<\/code> per eseguire l&#8217;OCR utilizzando il metodo <code>code_to_string()<\/code> e invia il testo estratto come parte della risposta.<\/p>\n<p>Creiamo un file <strong>wsgi.py<\/strong> nella stessa directory di <strong>ocrapi<\/strong> e salviamo i contenuti qui di seguito:<\/p>\n<pre><code class=\"language-python\">from ocrapi.main import app as application\n\nif __name__ == \"__main__\":\n    application.run()\n<\/code><\/pre>\n<p>Ora possiamo eseguire l&#8217;applicazione con il seguente comando:<\/p>\n<pre><code class=\"language-bash\">gunicorn ocrapi.wsgi<\/code><\/pre>\n<p>La nostra API OCR di base \u00e8 pronta ed \u00e8 ora di testarla!<\/p>\n<h2>Testare l&#8217;API OCR in locale<\/h2>\n<p>Possiamo utilizzare la CLI cURL integrata per inviare richieste all&#8217;API o passare a uno strumento di test API dettagliato come Postman. Per testare l&#8217;API, dovremo scaricare un&#8217;immagine campione con del testo. Per ora possiamo utilizzare <a href=\"https:\/\/imgur.com\/F8AsB1W\" target=\"_blank\" rel=\"noopener noreferrer\">questa semplice immagine<\/a> o <a href=\"https:\/\/imgur.com\/oybKK06\" target=\"_blank\" rel=\"noopener noreferrer\">questa scritta &#8220;a mano&#8221;<\/a>.<\/p>\n<p>Scarichiamo una delle due nella cartella del progetto e diamole un nome semplice, come <strong>simple-image.png<\/strong> o <strong>scribbled-image.png, a <\/strong>seconda dell&#8217;immagine scelta.<\/p>\n<p>Quindi, apriamo il terminale e navighiamo nella directory del progetto. Eseguiamo questo comando per testare l&#8217;API:<\/p>\n<pre><code class=\"language-bash\">curl -X POST -F \u201cimage=@scribbled-image.png\u201d localhost:5000\/ocr<\/code><\/pre>\n<p>Questo comando invia una richiesta all&#8217;API OCR e restituisce una risposta simile:<\/p>\n<pre><code class=\"language-bash\">{\n  \"status\": \"success\",\n  \"text\": \"This looks like it was written in a hucrynn\"\n}<\/code><\/pre>\n<p>Questo conferma che l&#8217;API OCR \u00e8 stata configurata correttamente. Possiamo anche provare con un&#8217;immagine semplice: ecco come dovrebbe apparire la risposta:<\/p>\n<pre><code class=\"language-bash\">{\n  \"status\": \"success\",\n  \"text\": \"This looks like it was written with a steady handnn\"\n}<\/code><\/pre>\n<p>Questo dimostra anche l&#8217;accuratezza del motore OCR di Tesseract. Ora possiamo procedere a ospitare la nostra API OCR sull&#8217;Hosting di Applicazioni di Kinsta in modo da potervi accedere online.<\/p>\n<h2>Distribuzione dell&#8217;API OCR<\/h2>\n<p>Per distribuire l&#8217;applicazione su Kinsta, dobbiamo prima inviare il codice del progetto a un provider Git (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> o <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>).<\/p>\n<p>Prima di inviare il codice, dobbiamo configurare Tesseract separatamente sul sistema host per poter utilizzare il wrapper PyTesseract. Per poter utilizzare il wrapper sulla piattaforma di applicazioni di Kinsta (o su qualsiasi altro ambiente, in generale), dovremo configurarlo anche l\u00ec.<\/p>\n<p>Se state lavorando con istanze di calcolo remote (come AWS EC2), potete accedere via SSH all&#8217;istanza di calcolo ed eseguire il comando appropriato per installare il pacchetto su di essa.<\/p>\n<p>Tuttavia, le piattaforme applicative non consentono l&#8217;accesso diretto all&#8217;host. Dovremo utilizzare una soluzione come <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/buildpacks\">Buildpacks<\/a> o <a href=\"https:\/\/docs.sevalla.com\/applications\/deploymentsDockerfiles\">Dockerfiles<\/a> per impostare i requisiti iniziali degli ambienti dell&#8217;applicazione (che comprenderanno la configurazione del pacchetto Tesseract a livello locale) e poi installare l&#8217;applicazione.<\/p>\n<p>Aggiungiamo un file <strong>nixpacks.toml<\/strong> nella directory del progetto con i seguenti contenuti:<\/p>\n<pre><code class=\"language-toml\"># nixpacks.toml\n\nproviders = [\"python\"]\n\n[phases.setup]\nnixPkgs = [\"...\", \"tesseract\"]\n\n[phases.build]\ncmds = [\"echo building!\", \"pip install -r requirements.txt\", \"...\"]\n\n[start]\ncmd = \"gunicorn ocrapi.wsgi\"<\/code><\/pre>\n<p>In questo modo la piattaforma di build verr\u00e0 istruita a<\/p>\n<ol start=\"1\">\n<li>Utilizzare il runtime Python per costruire ed eseguire l&#8217;applicazione<\/li>\n<li>Impostare il pacchetto Tesseract nel contenitore dell&#8217;applicazione.<\/li>\n<li>Avviare l&#8217;applicazione utilizzando <code>gunicorn<\/code>.<\/li>\n<\/ol>\n<p>Inoltre, eseguiamo il comando qui sotto per generare un file <strong>requirements.txt<\/strong> che la piattaforma applicativa pu\u00f2 utilizzare per installare i pacchetti Python necessari durante la build:<\/p>\n<pre><code class=\"language-bash\">pip3 freeze &gt; requirements.txt<\/code><\/pre>\n<p>Quando il repository Git \u00e8 pronto, seguiamo questi passaggi per distribuire l&#8217;API OCR su Kinsta:<\/p>\n<ol start=\"1\">\n<li>Accediamo o creiamo un account per visualizzare la dashboard <a href=\"https:\/\/my.kinsta.com\/?lang=it\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorizziamo Kinsta con il provider Git.<\/li>\n<li>Nella barra laterale di sinistra, clicchiamo su <strong>Applicazioni<\/strong> e poi su <strong>Aggiungi applicazione<\/strong>.<\/li>\n<li>Selezioniamo il repository e il ramo da cui desideriamo effettuare il deploy.<\/li>\n<li>Selezioniamo uno dei data center disponibili tra le 27 opzioni in lista. Kinsta rileva automaticamente le impostazioni di build delle applicazioni attraverso il file Nixpack, quindi lascia vuoto il campo del comando di avvio.<\/li>\n<li>Scegliamo le risorse dell&#8217;applicazione, come la RAM e lo spazio su disco.<\/li>\n<li>Clicchiamo su <strong>Crea applicazione<\/strong>.<\/li>\n<\/ol>\n<p>Una volta completata la distribuzione, copiamo il link dell&#8217;applicazione distribuita ed eseguiamo questo comando sulla CLI:<\/p>\n<pre><code class=\"\u201dlanguage-bash\u201d\">curl -x POST -F \u201cimage=@simple-image.png\u201d &lt;your-deployed-app-link&gt;\/ocr<\/code><\/pre>\n<p>Questo dovrebbe restituire la stessa risposta che abbiamo ricevuto in locale:<\/p>\n<pre><code class=\"language-bash\">{\"status\":\"success\",\"text\":\"This looks like it was written with a steady handnn\"}<\/code><\/pre>\n<p>Possiamo anche utilizzare Postman per testare l&#8217;API.<\/p>\n<figure id=\"attachment_172438\" aria-describedby=\"caption-attachment-172438\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-172438 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/12\/trying-app-in-postman-1024x573.png\" alt=\"L'applicazione Postman mostra una richiesta POST inviata all'applicazione ospitata su Kinsta con la relativa risposta.\" width=\"1024\" height=\"573\"><figcaption id=\"caption-attachment-172438\" class=\"wp-caption-text\">Prova l&#8217;applicazione in Postman<\/figcaption><\/figure>\n<p>Questo completa lo sviluppo di un&#8217;API OCR di base. \u00c8 possibile accedere al <a href=\"https:\/\/github.com\/krharsh17\/ocr-api\" target=\"_blank\" rel=\"noopener noreferrer\">codice completo di questo progetto su GitHub<\/a>.<\/p>\n<h2>Riepilogo<\/h2>\n<p>Ora avete un&#8217;API OCR funzionante e self-hosted che potrete personalizzare a vostro piacimento! Questa API \u00e8 in grado di estrarre il testo dalle immagini, fornendo uno strumento prezioso per l&#8217;estrazione di dati, la digitalizzazione di documenti e altre applicazioni.<\/p>\n<p>Se continuate a sviluppare e perfezionare la vostra API OCR, considerate la possibilit\u00e0 di esplorare funzionalit\u00e0 avanzate come il supporto multilingue, le tecniche di pre-elaborazione delle immagini e l&#8217;integrazione con i servizi di cloud storage per l&#8217;archiviazione e l&#8217;accesso alle immagini.<\/p>\n<p><em>Quale caratteristica ritenete indispensabile per un&#8217;API OCR self-hosted? Fatecelo sapere nei commenti qui sotto!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;estrazione di testo dalle immagini \u00e8 un problema molto diffuso nell&#8217;ingegneria del software. Il riconoscimento ottico dei caratteri (OCR) \u00e8 una tecnologia pionieristica ampiamente utilizzata per &#8230;<\/p>\n","protected":false},"author":238,"featured_media":75833,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26215],"class_list":["post-75832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come creare una propria API OCR in Python - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Scopri le tecniche essenziali, dall&#039;elaborazione delle immagini all&#039;estrazione del testo, e sbloccate il potenziale della tecnologia OCR.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come creare una propria API OCR in Python\" \/>\n<meta property=\"og:description\" content=\"Scopri le tecniche essenziali, dall&#039;elaborazione delle immagini all&#039;estrazione del testo, e sbloccate il potenziale della tecnologia OCR.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-10T12:54:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-12T15:08:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kumar Harsh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Scopri le tecniche essenziali, dall&#039;elaborazione delle immagini all&#039;estrazione del testo, e sbloccate il potenziale della tecnologia OCR.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"Come creare una propria API OCR in Python\",\"datePublished\":\"2024-01-10T12:54:31+00:00\",\"dateModified\":\"2024-01-12T15:08:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\"},\"wordCount\":1158,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\",\"name\":\"Come creare una propria API OCR in Python - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\",\"datePublished\":\"2024-01-10T12:54:31+00:00\",\"dateModified\":\"2024-01-12T15:08:25+00:00\",\"description\":\"Scopri le tecniche essenziali, dall'elaborazione delle immagini all'estrazione del testo, e sbloccate il potenziale della tecnologia OCR.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come creare una propria API OCR in Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g\",\"caption\":\"Kumar Harsh\"},\"description\":\"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.\",\"sameAs\":[\"https:\/\/kumarharsh.me\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come creare una propria API OCR in Python - Kinsta\u00ae","description":"Scopri le tecniche essenziali, dall'elaborazione delle immagini all'estrazione del testo, e sbloccate il potenziale della tecnologia OCR.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/","og_locale":"it_IT","og_type":"article","og_title":"Come creare una propria API OCR in Python","og_description":"Scopri le tecniche essenziali, dall'elaborazione delle immagini all'estrazione del testo, e sbloccate il potenziale della tecnologia OCR.","og_url":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-01-10T12:54:31+00:00","article_modified_time":"2024-01-12T15:08:25+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"Scopri le tecniche essenziali, dall'elaborazione delle immagini all'estrazione del testo, e sbloccate il potenziale della tecnologia OCR.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Kumar Harsh","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"Come creare una propria API OCR in Python","datePublished":"2024-01-10T12:54:31+00:00","dateModified":"2024-01-12T15:08:25+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/"},"wordCount":1158,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/python-ocr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/","url":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/","name":"Come creare una propria API OCR in Python - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","datePublished":"2024-01-10T12:54:31+00:00","dateModified":"2024-01-12T15:08:25+00:00","description":"Scopri le tecniche essenziali, dall'elaborazione delle immagini all'estrazione del testo, e sbloccate il potenziale della tecnologia OCR.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/python-ocr\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/01\/python-ocr.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/python-ocr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/it\/argomenti\/python\/"},{"@type":"ListItem","position":3,"name":"Come creare una propria API OCR in Python"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de2d8d6273bdcc3dfa2f8270428f95b2?s=96&d=mm&r=g","caption":"Kumar Harsh"},"description":"Kumar is a software developer and a technical author based in India. He specializes in JavaScript and DevOps. You can learn more about his work on his website.","sameAs":["https:\/\/kumarharsh.me"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=75832"}],"version-history":[{"count":4,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75832\/revisions"}],"predecessor-version":[{"id":75858,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75832\/revisions\/75858"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75832\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/75833"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=75832"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=75832"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=75832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}