{"id":72872,"date":"2024-01-10T13:49:05","date_gmt":"2024-01-10T12:49:05","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=72872&#038;preview=true&#038;preview_id=72872"},"modified":"2024-01-12T16:05:26","modified_gmt":"2024-01-12T15:05:26","slug":"python-ocr","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/","title":{"rendered":"C\u00f3mo Construir tu Propia API OCR en Python"},"content":{"rendered":"<p>Extraer texto de im\u00e1genes ha sido durante mucho tiempo un problema habitual en la ingenier\u00eda de software. El Reconocimiento \u00d3ptico de Caracteres (OCR, Optical Character Recognition) ha sido una tecnolog\u00eda pionera muy utilizada para resolver este problema. Gracias a su capacidad para transformar im\u00e1genes que contienen texto en datos legibles por m\u00e1quina, el OCR ha revolucionado diversos sectores, desde la automatizaci\u00f3n del procesamiento de documentos hasta la traducci\u00f3n de idiomas.<\/p>\n<p>Aunque existen soluciones comerciales de OCR, crear tu propia API de OCR en Python, un lenguaje de programaci\u00f3n vers\u00e1til y potente, ofrece varias ventajas, como la personalizaci\u00f3n, el control sobre la privacidad de los datos y la posibilidad de ahorrar costes.<\/p>\n<p>Esta gu\u00eda te guiar\u00e1 en la creaci\u00f3n de tu propia API de OCR utilizando Python. Explora las bibliotecas, t\u00e9cnicas y consideraciones necesarias para desarrollar una API de OCR eficaz, permiti\u00e9ndote aprovechar el poder del OCR para tus aplicaciones.<\/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>Requisitos Previos<\/h2>\n<p>Para seguir adelante, necesitas conocimientos b\u00e1sicos de Python y Flask y una copia local de Python instalada en tu sistema.<\/p>\n<h2>Creaci\u00f3n de la API OCR<\/h2>\n<p>En esta gu\u00eda, aprender\u00e1s a construir una aplicaci\u00f3n Flask que permita a los usuarios subir im\u00e1genes a trav\u00e9s de un endpoint POST, que luego carga utilizando <a href=\"https:\/\/pypi.org\/project\/Pillow\/\">Pillow<\/a>, y procesa utilizando el wrapper <a href=\"https:\/\/github.com\/madmaze\/pytesseract\">PyTesseract<\/a> (para el motor <a href=\"https:\/\/github.com\/tesseract-ocr\/tesseract\">Tesseract<\/a> OCR). Finalmente, devuelve el texto extra\u00eddo como respuesta a la solicitud.<\/p>\n<p>Puedes personalizar a\u00fan m\u00e1s esta API para ofrecer opciones como la clasificaci\u00f3n basada en plantillas (extraer partidas de facturas, entradas en formularios de impuestos, etc.) u opciones de motor OCR (puedes encontrar m\u00e1s motores OCR <a href=\"https:\/\/github.com\/kba\/awesome-ocr#ocr-engines\" target=\"_blank\" rel=\"noopener noreferrer\">aqu\u00ed<\/a>).<\/p>\n<p>Para empezar, crea un nuevo directorio para tu proyecto. A continuaci\u00f3n, configura un nuevo entorno virtual en la carpeta ejecutando los siguientes comandos:<\/p>\n<pre><code class=\"\u201dlanguage-bash\u201d\">python3 -m venv env\nsource env\/bin\/activate<\/code><\/pre>\n<p>A continuaci\u00f3n, instala Flask, PyTesseract, Gunicorn y Pillow ejecutando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">pip3 install pytesseract flask pillow gunicorn<\/code><\/pre>\n<p>Una vez instalados, tienes que instalar el motor Tesseract OCR en tu m\u00e1quina host. Las instrucciones de instalaci\u00f3n de Tesseract variar\u00e1n en funci\u00f3n de tu sistema operativo host. Puedes encontrar las instrucciones adecuadas <a href=\"https:\/\/tesseract-ocr.github.io\/tessdoc\/Installation.html\" target=\"_blank\" rel=\"noopener noreferrer\">aqu\u00ed<\/a>.<\/p>\n<p>Por ejemplo, en MacOS, puedes instalar Tesseract utilizando <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew<\/a> ejecutando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">brew install tesseract<\/code><\/pre>\n<p>Una vez hecho esto, el wrapper PyTesseract podr\u00e1 comunicarse con el motor OCR y procesar las peticiones OCR.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Esto s\u00f3lo funciona en el entorno de desarrollo. Cuando despliegues la aplicaci\u00f3n en una plataforma de alojamiento remota, como Kinsta, tendr\u00e1s que volver a hacer esto (aunque de forma diferente seg\u00fan lo requiera la plataforma de alojamiento \u2014 lo entender\u00e1s m\u00e1s adelante).<\/p>\n<\/aside>\n\n<p>Ahora est\u00e1s preparado para escribir la aplicaci\u00f3n Flask. Crea un nuevo directorio llamado <strong>ocrapi<\/strong> y un nuevo archivo en este directorio con el nombre <strong>main.py. <\/strong>Guarda en \u00e9l el siguiente contenido:<\/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>El c\u00f3digo anterior crea una aplicaci\u00f3n Flask b\u00e1sica que tiene un endpoint\u2014<code>\/ocr<\/code>. Cuando env\u00edas una solicitud POST a este endpoint con un archivo de imagen, extrae el archivo, utiliza el wrapper <code>pytesseract<\/code> para realizar el OCR utilizando su m\u00e9todo <code>code_to_string()<\/code>, y devuelve el texto extra\u00eddo como parte de la respuesta.<\/p>\n<p>Crea un archivo <strong>wsgi.py<\/strong> en el mismo directorio <strong>ocrapi<\/strong> y guarda en \u00e9l el siguiente contenido:<\/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>Ahora puedes ejecutar la aplicaci\u00f3n utilizando el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">gunicorn ocrapi.wsgi<\/code><\/pre>\n<p>Tu API de OCR b\u00e1sica est\u00e1 lista, \u00a1y es hora de probarla!<\/p>\n<h2>Probando la API de OCR Localmente<\/h2>\n<p>Puedes utilizar la CLI cURL incorporada para enviar solicitudes a tu API o cambiar a una herramienta de prueba de API detallada como Postman. Para probar la API, necesitar\u00e1s descargar una imagen de muestra que contenga algo de texto. De momento, puedes utilizar <a href=\"https:\/\/imgur.com\/F8AsB1W\">esta sencilla<\/a> o <a href=\"https:\/\/imgur.com\/oybKK06\">esta escrita a mano<\/a>.<\/p>\n<p>Descarga cualquiera de ellas en el directorio del proyecto y ponle un nombre sencillo, como <strong>simple-image.png<\/strong> o <strong>scribbled-image.png, <\/strong>seg\u00fan la imagen que elijas.<\/p>\n<p>A continuaci\u00f3n, abre tu terminal y navega hasta el directorio de tu proyecto. Ejecuta el siguiente comando para probar la API:<\/p>\n<pre><code class=\"language-bash\">curl -X POST -F \u201cimage=@scribbled-image.png\u201d localhost:5000\/ocr<\/code><\/pre>\n<p>Esto env\u00eda una petici\u00f3n a tu API OCR y devuelve una respuesta similar:<\/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>Esto confirma que tu API de OCR se ha configurado correctamente. Tambi\u00e9n puedes probar con la imagen simple (simple-image.png), y este es el aspecto que deber\u00eda tener la respuesta:<\/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>Esto tambi\u00e9n demuestra la precisi\u00f3n del motor OCR de Tesseract. Ahora puedes proceder a alojar tu API de OCR en el Alojamiento de Aplicaciones de Kinsta para que se pueda acceder a ella online.<\/p>\n<h2>Desplegando tu API OCR<\/h2>\n<p>Para desplegar tu aplicaci\u00f3n en Kinsta, primero tienes que enviar el c\u00f3digo de tu proyecto a un proveedor 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>Antes de enviar tu c\u00f3digo, tienes que configurar Tesseract por separado en tu sistema host para poder utilizar con \u00e9l el wrapper PyTesseract. Para poder utilizar el wrapper en la plataforma de aplicaciones Kinsta (o en cualquier otro entorno, en general), tambi\u00e9n tendr\u00e1s que configurarlo all\u00ed.<\/p>\n<p>Si estuvieras trabajando con instancias de computaci\u00f3n remotas (como AWS EC2), podr\u00edas acceder mediante SSH a la instancia de computaci\u00f3n y ejecutar el comando adecuado para instalar el paquete en ella.<\/p>\n<p>Sin embargo, las plataformas de aplicaci\u00f3n no te proporcionan acceso directo al host. Tendr\u00e1s que utilizar una soluci\u00f3n como <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> para configurar los requisitos iniciales de los entornos de tu aplicaci\u00f3n (lo que incluir\u00e1 configurar el paquete Tesseract localmente) y luego instalar la aplicaci\u00f3n.<\/p>\n<p>A\u00f1ade un archivo <strong>nixpacks.toml<\/strong> en el directorio de tu proyecto con el siguiente contenido:<\/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>Esto indicar\u00e1 a la plataforma de compilaci\u00f3n que<\/p>\n<ol start=\"1\">\n<li>Utilizar el entorno de ejecuci\u00f3n de Python para construir y ejecutar tu aplicaci\u00f3n<\/li>\n<li>Configurar el paquete Tesseract en el contenedor de tu aplicaci\u00f3n.<\/li>\n<li>Iniciar la aplicaci\u00f3n utilizando <code>gunicorn<\/code>.<\/li>\n<\/ol>\n<p>Adem\u00e1s, ejecuta el siguiente comando para generar un archivo <strong>requirements.txt<\/strong> que la plataforma de la aplicaci\u00f3n pueda utilizar para instalar los paquetes Python necesarios durante la construcci\u00f3n:<\/p>\n<pre><code class=\"language-bash\">pip3 freeze &gt; requirements.txt<\/code><\/pre>\n<p>Una vez que tu repositorio Git est\u00e9 listo, sigue estos pasos para desplegar tu API OCR en Kinsta:<\/p>\n<ol start=\"1\">\n<li>Inicia sesi\u00f3n o crea una cuenta para ver tu panel <a href=\"https:\/\/my.kinsta.com\/?lang=es\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autoriza a Kinsta con tu proveedor Git.<\/li>\n<li>En la barra lateral izquierda, haz clic en <strong>Aplicaciones<\/strong> y luego en <strong>A\u00f1adir Aplicaci\u00f3n<\/strong>.<\/li>\n<li>Selecciona el repositorio y la rama desde la que deseas desplegar.<\/li>\n<li>Selecciona una de las ubicaciones de centros de datos disponibles en la lista de 27 opciones. Kinsta detecta autom\u00e1ticamente la configuraci\u00f3n de construcci\u00f3n de tus aplicaciones a trav\u00e9s de tu archivo Nixpack \u2014 as\u00ed que deja en blanco el campo de comando de inicio.<\/li>\n<li>Elige los recursos de tu aplicaci\u00f3n, como RAM y espacio en disco.<\/li>\n<li>Haz clic en <strong>Crear aplicaci\u00f3n<\/strong>.<\/li>\n<\/ol>\n<p>Una vez completado el despliegue, copia el enlace de la aplicaci\u00f3n desplegada y ejecuta el siguiente comando en tu 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>Esto deber\u00eda devolver la misma respuesta que recibiste localmente:<\/p>\n<pre><code class=\"language-bash\">{\"status\":\"success\",\"text\":\"This looks like it was written with a steady handnn\"}<\/code><\/pre>\n<p>Tambi\u00e9n puedes utilizar Postman para probar la 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=\"Aplicaci\u00f3n Postman que muestra una solicitud POST enviada a la aplicaci\u00f3n alojada en Kinsta con su respuesta.\" width=\"1024\" height=\"573\"><figcaption id=\"caption-attachment-172438\" class=\"wp-caption-text\">Probar la aplicaci\u00f3n en Postman<\/figcaption><\/figure>\n<p>Esto completa el desarrollo de una API b\u00e1sica de OCR. Puedes acceder al <a href=\"https:\/\/github.com\/krharsh17\/ocr-api\" target=\"_blank\" rel=\"noopener noreferrer\">c\u00f3digo completo de este proyecto en GitHub<\/a>.<\/p>\n<h2>Resumen<\/h2>\n<p>Ya tienes una API de OCR autoalojada que funciona y que puedes personalizar a tu gusto Esta API puede extraer texto de im\u00e1genes, proporcionando una valiosa herramienta para la extracci\u00f3n de datos, la digitalizaci\u00f3n de documentos y otras aplicaciones.<\/p>\n<p>A medida que sigas desarrollando y perfeccionando tu API de OCR, considera la posibilidad de explorar funciones avanzadas como la compatibilidad con varios idiomas, las t\u00e9cnicas de preprocesamiento de im\u00e1genes y la integraci\u00f3n con servicios de almacenamiento en la nube para guardar y acceder a las im\u00e1genes.<\/p>\n<p><em>\u00bfQu\u00e9 funci\u00f3n crees que es indispensable para una API de OCR autoalojada? H\u00e1znoslo saber en los comentarios<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Extraer texto de im\u00e1genes ha sido durante mucho tiempo un problema habitual en la ingenier\u00eda de software. El Reconocimiento \u00d3ptico de Caracteres (OCR, Optical Character Recognition) &#8230;<\/p>\n","protected":false},"author":238,"featured_media":72873,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1320],"class_list":["post-72872","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>C\u00f3mo Construir tu Propia API OCR en Python - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda 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\/es\/blog\/python-ocr\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo Construir tu Propia API OCR en Python\" \/>\n<meta property=\"og:description\" content=\"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-10T12:49:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-12T15:05:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/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=\"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kumar Harsh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\"},\"author\":{\"name\":\"Kumar Harsh\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\"},\"headline\":\"C\u00f3mo Construir tu Propia API OCR en Python\",\"datePublished\":\"2024-01-10T12:49:05+00:00\",\"dateModified\":\"2024-01-12T15:05:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\"},\"wordCount\":1342,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\",\"name\":\"C\u00f3mo Construir tu Propia API OCR en Python - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg\",\"datePublished\":\"2024-01-10T12:49:05+00:00\",\"dateModified\":\"2024-01-12T15:05:26+00:00\",\"description\":\"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo Construir tu Propia API OCR en Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"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\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9\",\"name\":\"Kumar Harsh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/kumarharsh\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo Construir tu Propia API OCR en Python - Kinsta\u00ae","description":"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda 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\/es\/blog\/python-ocr\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo Construir tu Propia API OCR en Python","og_description":"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.","og_url":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2024-01-10T12:49:05+00:00","article_modified_time":"2024-01-12T15:05:26+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","type":"image\/jpeg"}],"author":"Kumar Harsh","twitter_card":"summary_large_image","twitter_description":"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Kumar Harsh","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/"},"author":{"name":"Kumar Harsh","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9"},"headline":"C\u00f3mo Construir tu Propia API OCR en Python","datePublished":"2024-01-10T12:49:05+00:00","dateModified":"2024-01-12T15:05:26+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/"},"wordCount":1342,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/python-ocr\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/","url":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/","name":"C\u00f3mo Construir tu Propia API OCR en Python - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","datePublished":"2024-01-10T12:49:05+00:00","dateModified":"2024-01-12T15:05:26+00:00","description":"Aprende las t\u00e9cnicas esenciales, desde el procesamiento de im\u00e1genes hasta la extracci\u00f3n de texto, y libera el potencial de la tecnolog\u00eda OCR.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/python-ocr\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2024\/01\/python-ocr.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/python-ocr\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/es\/secciones\/python\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo Construir tu Propia API OCR en Python"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","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\/es\/#\/schema\/person\/3a80efffa9cbb0333cc9c22b754415d9","name":"Kumar Harsh","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/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\/es\/blog\/author\/kumarharsh\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/72872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=72872"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/72872\/revisions"}],"predecessor-version":[{"id":72919,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/72872\/revisions\/72919"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/72872\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/72873"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=72872"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=72872"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=72872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}