<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Docker on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/docker/</link>
        <description>Recent content in Docker on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 19 Apr 2026 08:56:01 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/docker/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Notas del proyecto rembg: una herramienta de eliminación de fondo local</title>
        <link>https://knightli.com/es/2026/04/19/rembg-background-removal-notes/</link>
        <pubDate>Sun, 19 Apr 2026 08:56:01 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/19/rembg-background-removal-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; es una herramienta de eliminación de fondo de imágenes. Se puede utilizar como herramienta de línea de comandos, biblioteca de Python, servidor HTTP o contenedor Docker. Su propósito es sencillo: tomar una imagen como entrada y generar el primer plano con un canal alfa. Funciona bien para imágenes de productos, retratos, procesamiento de materiales y flujos de trabajo de imágenes automatizados.&lt;/p&gt;
&lt;p&gt;La mejor parte es que puede ejecutarse localmente. Si no desea cargar imágenes de origen a un servicio de recorte en línea, necesita procesamiento por lotes o desea conectar la eliminación de fondo a scripts y sistemas comerciales, &lt;code&gt;rembg&lt;/code&gt; es más fácil de automatizar que una herramienta web.&lt;/p&gt;
&lt;h2 id=&#34;01-instalación&#34;&gt;01 Instalación
&lt;/h2&gt;&lt;p&gt;La versión actual requiere Python &lt;code&gt;&amp;gt;=3.11,&amp;lt;3.14&lt;/code&gt;. Elija el backend según su hardware:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si necesita la CLI, agregue &lt;code&gt;cli&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para entornos NVIDIA CUDA, instale la versión GPU:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[gpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para entornos AMD ROCm, primero instale &lt;code&gt;onnxruntime-rocm&lt;/code&gt; siguiendo las instrucciones oficiales de ROCm, luego instale:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[rocm,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La mayoría de los problemas con la versión de GPU no están en &lt;code&gt;rembg&lt;/code&gt; en sí, sino en si coinciden &lt;code&gt;onnxruntime-gpu&lt;/code&gt;, CUDA, cuDNN y las versiones del controlador. Si la instalación falla, primero confirme el flujo de trabajo con la versión de la CPU y luego ocúpese del entorno de la GPU.&lt;/p&gt;
&lt;h2 id=&#34;02-subcomandos-cli&#34;&gt;02 Subcomandos CLI
&lt;/h2&gt;&lt;p&gt;Después de instalar la CLI, puede usar &lt;code&gt;rembg&lt;/code&gt; directamente en la terminal. Proporciona principalmente 4 subcomandos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;: procesa un solo archivo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt;: procesa una carpeta completa.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;: inicia un servidor HTTP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt;: procesa un flujo binario RGB de 24 píxeles, utilizado a menudo con FFmpeg.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mostrar ayuda:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Procese una única imagen local:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tubería en una imagen remota:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s http://input.png &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; rembg i &amp;gt; output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Especifique un modelo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -m u2netp input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Devuelve sólo la máscara:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -om input.png mask.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Habilitar estera alfa:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -a input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-a&lt;/code&gt; a veces puede producir cabello más natural, bordes borrosos y límites semitransparentes, pero es más lento y no mejora notablemente todas las imágenes.&lt;/p&gt;
&lt;h2 id=&#34;03-carpetas-de-procesamiento-por-lotes&#34;&gt;03 Carpetas de procesamiento por lotes
&lt;/h2&gt;&lt;p&gt;El procesamiento por lotes es una de las partes más útiles de &amp;ldquo;rembg&amp;rdquo;. Coloque las imágenes de origen en un directorio y envíe los resultados a otro:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esté atento a los cambios de directorio y procese automáticamente imágenes nuevas o modificadas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p -w path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Este modo funciona bien con scripts de descarga, limpieza de imágenes de productos y carpetas de materiales. Por ejemplo, suelte imágenes en &amp;ldquo;entrada&amp;rdquo; y deje que &amp;ldquo;rembg&amp;rdquo; genere archivos PNG transparentes en &amp;ldquo;salida&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;04-utilizándolo-como-biblioteca-de-python&#34;&gt;04 Utilizándolo como biblioteca de Python
&lt;/h2&gt;&lt;p&gt;Si desea integrarlo en su propio script, la forma más sencilla es &amp;ldquo;eliminar&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También puedes procesar imágenes PIL directamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para el procesamiento por lotes, reutilice una sesión para que el modelo no se inicialice nuevamente para cada imagen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.out.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si está creando un servicio de procesamiento de imágenes de larga duración, la reutilización de sesiones suele ser una mejor opción que llamar repetidamente a la CLI.&lt;/p&gt;
&lt;h2 id=&#34;05-iniciando-un-servidor-http&#34;&gt;05 Iniciando un servidor HTTP
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; también puede iniciar un servidor HTTP directamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;7000&lt;/span&gt; --log_level info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después del inicio, visite:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:7000/api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eliminar el fondo de una URL:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove?url=http://input.png&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Sube una imagen local:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s -F &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;@input.jpg &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si solo necesita la API y no necesita la interfaz de usuario de Gradio, desactive la interfaz de usuario para reducir el uso inactivo de la CPU:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --no-ui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El modo servidor es adecuado para herramientas internas, flujos de automatización u otras aplicaciones. Pero no es un sistema completo de gestión de activos de imágenes. La autenticación, la limitación de velocidad, las colas y la limpieza de archivos aún deben gestionarse fuera de él.&lt;/p&gt;
&lt;h2 id=&#34;06-uso-de-docker&#34;&gt;06 Uso de Docker
&lt;/h2&gt;&lt;p&gt;La versión de CPU puede usar la imagen oficial directamente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La aceleración CUDA requiere NVIDIA Container Toolkit en el host y, por lo general, requiere crear una imagen a partir del &lt;code&gt;Dockerfile_nvidia_cuda_cudnn_gpu&lt;/code&gt; del proyecto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t rembg-nvidia-cuda-cudnn-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ejecutar ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it --gpus all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /dev/dri:/dev/dri &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;:/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  rembg-nvidia-cuda-cudnn-gpu &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  i -m birefnet-general /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El archivo README oficial señala que la imagen de la GPU es mucho más grande que la imagen de la CPU y los archivos del modelo no están incluidos en la imagen. Para evitar descargar modelos repetidamente, monte el directorio del modelo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v /path/to/models:/root/.u2net ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-opciones-de-modelo&#34;&gt;07 Opciones de modelo
&lt;/h2&gt;&lt;p&gt;Cuando &lt;code&gt;rembg&lt;/code&gt; usa un modelo por primera vez, lo descarga automáticamente a &lt;code&gt;~/.u2net/&lt;/code&gt;. Los modelos comunes incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u2net&lt;/code&gt;: un modelo de propósito general para casos comunes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2netp&lt;/code&gt;: una versión ligera con velocidad y tamaño más amigables.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_human_seg&lt;/code&gt;: enfocado a la segmentación humana.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_cloth_seg&lt;/code&gt;: enfocado al análisis de ropa.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;silueta&lt;/code&gt;: similar a &lt;code&gt;u2net&lt;/code&gt;, pero más pequeña.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-general-use&lt;/code&gt;: un modelo más nuevo de propósito general.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-anime&lt;/code&gt;: enfocado a la segmentación de personajes de anime.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;birefnet-general&lt;/code&gt;: un modelo de imagen general utilizado en el ejemplo README.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sam&lt;/code&gt;: puede trabajar con parámetros adicionales como puntos de aviso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En la práctica, no elijas sólo por el nombre del modelo. Las imágenes de productos, los retratos, las imágenes de anime, los fondos complejos y los objetos transparentes tienen requisitos diferentes. Un enfoque más seguro es elegir un conjunto de imágenes representativo, ejecutar varios modelos, comparar bordes, áreas omitidas, eliminaciones falsas y velocidad, y luego decidir el modelo predeterminado.&lt;/p&gt;
&lt;p&gt;Si desea utilizar un modelo &lt;code&gt;.onnx&lt;/code&gt; personalizado, colóquelo en el directorio del modelo predeterminado &lt;code&gt;~/.u2net/&lt;/code&gt; y configúrelo cuando sea necesario:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MODEL_CHECKSUM_DISABLED&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto puede evitar que &lt;code&gt;rembg&lt;/code&gt; sobrescriba su archivo de modelo debido a la lógica de suma de comprobación.&lt;/p&gt;
&lt;h2 id=&#34;08-casos-de-uso-adecuados&#34;&gt;08 Casos de uso adecuados
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; se adapta bien a estas tareas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generar por lotes imágenes de productos con fondo transparente.&lt;/li&gt;
&lt;li&gt;Extraiga primeros planos de retratos, fotografías de identificación e imágenes de materiales.&lt;/li&gt;
&lt;li&gt;Integre la eliminación de fondo en scripts de Python o servicios backend.&lt;/li&gt;
&lt;li&gt;Implementar una API de eliminación de fondo simple en una red interna.&lt;/li&gt;
&lt;li&gt;Utilice tuberías FFmpeg para procesar fotogramas de vídeo o secuencias de imágenes.&lt;/li&gt;
&lt;li&gt;Mantenga los materiales sensibles a la privacidad o protegidos por derechos de autor lejos de los servicios en línea de terceros.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es menos adecuado para estos casos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Necesita bordes retocados a mano y materiales transparentes complejos.&lt;/li&gt;
&lt;li&gt;Cada imagen debe alcanzar una calidad de fotografía comercial estable.&lt;/li&gt;
&lt;li&gt;Quieres una herramienta de diseño en línea completa en lugar de solo eliminar el fondo.&lt;/li&gt;
&lt;li&gt;No desea mantener un entorno Python o Docker.&lt;/li&gt;
&lt;li&gt;Su entorno de controlador de GPU, CUDA o ROCm ya está desordenado y el proyecto debe iniciarse rápidamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;09-consejos-de-uso&#34;&gt;09 Consejos de uso
&lt;/h2&gt;&lt;p&gt;Si solo procesa imágenes ocasionalmente, la versión de la CPU es suficiente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para procesar por lotes miles de imágenes, considere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reutilizar una sesión de Python.&lt;/li&gt;
&lt;li&gt;Arreglando el directorio del modelo para evitar descargas repetidas.&lt;/li&gt;
&lt;li&gt;Uso de un SSD para entradas, salidas y archivos de modelo.&lt;/li&gt;
&lt;li&gt;Probar primero la calidad del modelo en un lote pequeño.&lt;/li&gt;
&lt;li&gt;Decidir si la aceleración de la GPU vale la pena después.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El valor de la GPU es principalmente el rendimiento por lotes. Para el procesamiento ocasional de una sola imagen, el costo de configuración puede ser mayor que el tiempo ahorrado. Especialmente en Windows, cuando las versiones CUDA, cuDNN y &lt;code&gt;onnxruntime-gpu&lt;/code&gt; no coinciden, la versión de CPU puede ser la opción más práctica.&lt;/p&gt;
&lt;h2 id=&#34;10-toma-rápida&#34;&gt;10 toma rápida
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; es simple, de código abierto y flexible: puede ejecutarse como una CLI, llamarse desde Python, exponer puntos finales HTTP o empaquetarse con Docker. Es un buen componente base para la eliminación automática del fondo local.&lt;/p&gt;
&lt;p&gt;Pero no es un borrador mágico. Los fondos complejos, los bordes finos del sujeto, los materiales transparentes, la preservación de las sombras y los retoques de calidad comercial aún pueden requerir trabajo manual o un flujo de trabajo más especializado. Al implementar la automatización por lotes, es mejor realizar una revisión humana o un paso de recuperación de muestras fallidas.&lt;/p&gt;
&lt;p&gt;Si el objetivo es eliminar fondos de un lote de imágenes rápidamente manteniendo el proceso local, vale la pena mantener &amp;ldquo;rembg&amp;rdquo; en la caja de herramientas.&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Proyecto GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LÉAME: &lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lanzamientos: &lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Matriz de instalación de ONNX Runtime: &lt;a class=&#34;link&#34; href=&#34;https://onnxruntime.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://onnxruntime.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Guía práctica de codex-quota: uso local, web y de Docker con comandos CLI originales</title>
        <link>https://knightli.com/es/2026/04/16/codex-quota-cli-web-docker-guide/</link>
        <pubDate>Thu, 16 Apr 2026 18:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/16/codex-quota-cli-web-docker-guide/</guid>
        <description>&lt;h2 id=&#34;qué-hace-este-proyecto&#34;&gt;Qué hace este proyecto
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;codex-quota&lt;/code&gt; es una herramienta liviana para verificar el uso de la cuota de ChatGPT Codex, con datos obtenidos de &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Características principales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Admite consultas de una sola cuenta y de varias cuentas (&lt;code&gt;account/*.auth.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Genera &lt;code&gt;five_hour%&lt;/code&gt;, &lt;code&gt;weekly%&lt;/code&gt;, &lt;code&gt;weekly_reset&lt;/code&gt; y marca la fuente (&lt;code&gt;network&lt;/code&gt; o &lt;code&gt;cache&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Utiliza reintentos de retroceso exponencial para fallas temporales (&lt;code&gt;408&lt;/code&gt;, &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;5xx&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Incluye almacenamiento en caché local para reducir las solicitudes repetidas cuando la cuota ya está agotada.&lt;/li&gt;
&lt;li&gt;Proporciona un panel web, API JSON y páginas de administración de archivos de autenticación.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ventajas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ligero: se ejecuta con scripts simples y dependencias mínimas.&lt;/li&gt;
&lt;li&gt;Práctico: admite puntos de entrada CLI y Web.&lt;/li&gt;
&lt;li&gt;Implementable: funciona con Docker y Docker Compose.&lt;/li&gt;
&lt;li&gt;Fácil de operar: incluye reintento, caché y soporte de actualización programada.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;prepare-las-credenciales-de-la-cuenta-primero&#34;&gt;Prepare las credenciales de la cuenta primero
&lt;/h2&gt;&lt;p&gt;Cree archivos de credenciales en &lt;code&gt;account/&amp;lt;name&amp;gt;.auth.json&lt;/code&gt;, por ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;eyJ...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-xxxxxxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La API de uso requiere &lt;code&gt;access_token&lt;/code&gt; y &lt;code&gt;account_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;nombre&amp;gt;&lt;/code&gt; en el nombre del archivo se utiliza como nombre de cuenta en la salida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;uso-de-cli-local-conservar-los-comandos-originales&#34;&gt;Uso de CLI local (conservar los comandos originales)
&lt;/h2&gt;&lt;p&gt;Instalar dependencias:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: instala las dependencias del proyecto.&lt;/p&gt;
&lt;p&gt;Consultar todas las cuentas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: lee &lt;code&gt;account/*.auth.json&lt;/code&gt; y genera un resumen de cuota para todas las cuentas.&lt;/p&gt;
&lt;p&gt;Consulta una cuenta:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py your_account_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: solo consulta &lt;code&gt;cuenta/nombre_de_cuenta.auth.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Forzar actualización (omitir caché):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py --refresh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: ignora el caché local y recupera datos nuevos directamente.&lt;/p&gt;
&lt;h2 id=&#34;opciones-cli-alineadas-con-readme&#34;&gt;Opciones CLI (alineadas con README)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account_name&lt;/code&gt;: nombre de cuenta opcional (sin &lt;code&gt;.auth.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;: directorio de autenticación, &lt;code&gt;cuenta&lt;/code&gt; predeterminada.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;: punto final de API de cuota.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-json&lt;/code&gt;: imprime el cuerpo completo de la respuesta JSON.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-headers&lt;/code&gt;: imprime encabezados de respuesta.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;: ignora el caché.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;: recuento de reintentos, valor predeterminado &lt;code&gt;3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;: retraso de reintento base en segundos, valor predeterminado &lt;code&gt;2.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;uso-del-panel-web-conservar-el-comando-original&#34;&gt;Uso del panel web (conservar el comando original)
&lt;/h2&gt;&lt;p&gt;Iniciar el servicio:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota_service.py --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: inicia el servicio HTTP escuchando en el puerto &lt;code&gt;8081&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;URL de acceso: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Opciones de servicio:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--host&lt;/code&gt;: dirección de enlace, predeterminado &lt;code&gt;0.0.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port&lt;/code&gt;: puerto de servicio, predeterminado &lt;code&gt;8081&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--interval-segundos&lt;/code&gt;: intervalo de actualización programado, predeterminado &lt;code&gt;3600&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;: directorio de autenticación, &lt;code&gt;cuenta&lt;/code&gt; predeterminada.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--state-file&lt;/code&gt;: ruta del archivo de estado, predeterminado &lt;code&gt;&amp;lt;account-dir&amp;gt;/codex_quota_web_results.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-name&lt;/code&gt;: modo de cuenta única opcional.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;: punto final de API de cuota.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;: recuento de reintentos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;: retraso de reintento base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;: ignora el caché CLI durante las ejecuciones programadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;puntos-finales-http-para-automatización&#34;&gt;Puntos finales HTTP (para automatización)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /&lt;/code&gt;: página del panel de control.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/results&lt;/code&gt;: últimos resultados en JSON.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /refresh&lt;/code&gt;: activa la actualización inmediata y redirige a &lt;code&gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth&lt;/code&gt;: enumera los archivos de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/new&lt;/code&gt;: formulario para crear un archivo de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/edit?name=&amp;lt;cuenta&amp;gt;&lt;/code&gt;: formulario para editar el archivo de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/save&lt;/code&gt;: crea/actualiza el archivo de autenticación.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/delete&lt;/code&gt;: elimina el archivo de autenticación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;uso-de-docker-conservar-los-comandos-originales&#34;&gt;Uso de Docker (conservar los comandos originales)
&lt;/h2&gt;&lt;p&gt;Construir imagen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t codex-quota .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: construye el proyecto actual como imagen &lt;code&gt;codex-quota&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ejecutar contenedor (mapa 8081):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -p 8081:8081 -v ./account:/app/account codex-quota
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--rm&lt;/code&gt;: elimina el contenedor automáticamente después de salir.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p 8081:8081&lt;/code&gt;: asigna el puerto del host al puerto del contenedor.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v ./account:/app/account&lt;/code&gt;: monta las credenciales locales en el contenedor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;URL de acceso: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;uso-de-docker-compose-conservar-el-comando-original&#34;&gt;Uso de Docker Compose (conservar el comando original)
&lt;/h2&gt;&lt;p&gt;Inicio:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up --build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Explicación: cree e inicie servicios basados ​​en &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;URL de acceso: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;consejos-de-uso&#34;&gt;Consejos de uso
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Para escenarios de múltiples cuentas, use primero el Panel de control para una vista unificada y administración de autenticación.&lt;/li&gt;
&lt;li&gt;Para alertas o automatización, prefiera &lt;code&gt;GET /api/results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No envíe valores reales de &lt;code&gt;access_token&lt;/code&gt; a repositorios públicos.&lt;/li&gt;
&lt;li&gt;Si ve muchas fallas temporales, aumente &lt;code&gt;--retries&lt;/code&gt; y &lt;code&gt;--retry-delay&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Cree imágenes de Docker en VS Code en Windows: desde la configuración hasta la compilación</title>
        <link>https://knightli.com/es/2026/04/16/vscode-docker-image-build-windows/</link>
        <pubDate>Thu, 16 Apr 2026 10:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/16/vscode-docker-image-build-windows/</guid>
        <description>&lt;p&gt;Si desea crear imágenes de Docker directamente desde VS Code en Windows, el flujo de trabajo es sencillo. Solo necesitas tres partes: preparar el entorno, crear un Dockerfile y luego ejecutar la compilación.&lt;/p&gt;
&lt;h2 id=&#34;01-requisitos-previos&#34;&gt;01 Requisitos previos
&lt;/h2&gt;&lt;p&gt;Asegúrese de que estos dos elementos estén listos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instale y ejecute Docker Desktop.&lt;/li&gt;
&lt;li&gt;Instale la extensión oficial de Microsoft &lt;code&gt;Docker&lt;/code&gt; en VS Code.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En Windows, usar el backend &lt;code&gt;WSL 2&lt;/code&gt; en Docker Desktop (&lt;code&gt;Configuración &amp;gt; Recursos &amp;gt; Integración WSL&lt;/code&gt;) suele ser más estable y rápido.&lt;/p&gt;
&lt;h2 id=&#34;02-preparar-un-archivo-docker&#34;&gt;02 Preparar un archivo Docker
&lt;/h2&gt;&lt;p&gt;Si tu proyecto aún no tiene uno, VS Code puede generarlo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abra la carpeta de su proyecto en VS Code.&lt;/li&gt;
&lt;li&gt;Presione &lt;code&gt;F1&lt;/code&gt; o &lt;code&gt;Ctrl+Shift+P&lt;/code&gt; para abrir la paleta de comandos.&lt;/li&gt;
&lt;li&gt;Ejecute &lt;code&gt;Docker: Agregar archivos Docker al espacio de trabajo&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Elija su plataforma (Node.js, Python, .NET, etc.) y siga las indicaciones.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Normalmente obtendrá al menos:&lt;/p&gt;
&lt;p&gt;-&lt;code&gt;Dockerfile&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.dockerignore&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto le proporciona una base de trabajo que podrá perfeccionar más adelante.&lt;/p&gt;
&lt;h2 id=&#34;03-tres-maneras-de-construir-la-imagen&#34;&gt;03 Tres Maneras de Construir la Imagen
&lt;/h2&gt;&lt;h3 id=&#34;método-a-haga-clic-con-el-botón-derecho-en-dockerfile&#34;&gt;Método A: haga clic con el botón derecho en Dockerfile
&lt;/h3&gt;&lt;p&gt;En el Explorador de archivos, haga clic derecho en &amp;ldquo;Dockerfile&amp;rdquo;, seleccione &amp;ldquo;Crear imagen&amp;hellip;&amp;rdquo; e ingrese una etiqueta de imagen.&lt;/p&gt;
&lt;h3 id=&#34;método-b-paleta-de-comandos&#34;&gt;Método B: Paleta de comandos
&lt;/h3&gt;&lt;p&gt;Presione &lt;code&gt;F1&lt;/code&gt;, ejecute &lt;code&gt;Docker: Build Image&lt;/code&gt;, luego seleccione el contexto y la etiqueta.&lt;/p&gt;
&lt;h3 id=&#34;método-c-terminal-integrado&#34;&gt;Método C: Terminal integrado
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t your-image-name .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Este comando crea una imagen a partir del contexto del directorio actual con la etiqueta &lt;code&gt;tu-nombre-de-imagen&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;04-comprobaciones-rápidas-para-problemas-comunes&#34;&gt;04 Comprobaciones rápidas para problemas comunes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Docker Desktop no se está ejecutando: verifique que esté iniciado.&lt;/li&gt;
&lt;li&gt;La compilación es muy lenta: verifique si el backend de WSL 2 está habilitado.&lt;/li&gt;
&lt;li&gt;La compilación no puede encontrar archivos: asegúrese de que su terminal esté en la raíz del proyecto y que los archivos estén dentro del contexto de compilación.&lt;/li&gt;
&lt;li&gt;Los recursos de Docker no se muestran en VS Code: reinicie VS Code y verifique Docker CLI (&lt;code&gt;versión de Docker&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;La creación de imágenes de Docker en VS Code en Windows es principalmente un problema de configuración. Una vez que Docker Desktop y la extensión VS Code Docker estén implementados, puede generar archivos Docker rápidamente y crear imágenes desde la interfaz de usuario o el terminal.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Notas del proyecto RAGFlow: funciones y uso de un motor RAG open source</title>
        <link>https://knightli.com/es/2026/04/15/ragflow-rag-engine-guide/</link>
        <pubDate>Wed, 15 Apr 2026 22:09:25 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/15/ragflow-rag-engine-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;RAGFlow&lt;/code&gt; es un motor RAG open source de &lt;code&gt;infiniflow&lt;/code&gt;. Su objetivo no es ofrecer una simple capa de &amp;ldquo;sube documentos y haz preguntas&amp;rdquo;, sino reunir parsing de documentos, chunking, recuperación, reranking, trazabilidad de citas, configuración de modelos, capacidades de agentes e integración API en un flujo completo.&lt;/p&gt;
&lt;p&gt;Si estás construyendo una base de conocimiento empresarial, Q&amp;amp;A sobre documentos, un asistente de soporte, recuperación de información interna o una capa de contexto más fiable para un LLM, RAGFlow es una de las opciones open source que merece atención seria.&lt;/p&gt;
&lt;h2 id=&#34;01-qué-problema-resuelve-ragflow&#34;&gt;01 Qué problema resuelve RAGFlow
&lt;/h2&gt;&lt;p&gt;La mayoría de sistemas RAG tropiezan con tres problemas comunes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El parsing de documentos es inestable, especialmente con PDFs, escaneos, tablas, imágenes y layouts complejos.&lt;/li&gt;
&lt;li&gt;La estrategia de chunking es opaca, así que la recuperación puede parecer correcta mientras el contexto real está incompleto.&lt;/li&gt;
&lt;li&gt;Las respuestas no tienen citas confiables, lo que dificulta verificar de dónde viene la respuesta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAGFlow se centra justo en esos problemas. El README del proyecto enfatiza &lt;code&gt;Deep document understanding&lt;/code&gt;, chunking basado en plantillas, visualización de chunks, grounding de citas y recuperación multipath con reranking. En otras palabras, le importa más que una entrada de alta calidad lleve a respuestas de alta calidad que simplemente conectar una base vectorial a una UI de chat.&lt;/p&gt;
&lt;h2 id=&#34;02-funciones-principales&#34;&gt;02 Funciones principales
&lt;/h2&gt;&lt;h3 id=&#34;1-comprensión-profunda-de-documentos&#34;&gt;1. Comprensión profunda de documentos
&lt;/h3&gt;&lt;p&gt;RAGFlow puede extraer conocimiento de datos no estructurados complejos. El README lista formatos como Word, PPT, Excel, TXT, imágenes, documentos escaneados, datos estructurados y páginas web.&lt;/p&gt;
&lt;p&gt;Esto importa mucho para bases de conocimiento empresariales. El material real rara vez es Markdown limpio. Suele mezclar contratos, informes, tablas, PDFs escaneados, manuales de producto, capturas y contenido web. Si el parsing es débil, tanto la recuperación como las respuestas del LLM sufrirán.&lt;/p&gt;
&lt;h3 id=&#34;2-chunking-basado-en-plantillas&#34;&gt;2. Chunking basado en plantillas
&lt;/h3&gt;&lt;p&gt;RAGFlow ofrece chunking basado en plantillas. El valor está en que el chunking no es una caja negra: distintos tipos de documentos pueden usar estrategias distintas.&lt;/p&gt;
&lt;p&gt;Por ejemplo, artículos, papers, tablas, documentos Q&amp;amp;A, explicaciones de imágenes y cláusulas contractuales necesitan límites y granularidad de chunk diferentes. El chunking por plantillas ayuda a reducir frases rotas, pérdida de contexto de tablas y separación entre títulos y cuerpo.&lt;/p&gt;
&lt;h3 id=&#34;3-citas-trazables&#34;&gt;3. Citas trazables
&lt;/h3&gt;&lt;p&gt;RAGFlow enfatiza citas fundamentadas, es decir, respuestas que pueden rastrearse hasta pasajes fuente. También ofrece visualización de chunks, facilitando inspeccionar y ajustar resultados de parsing y chunking.&lt;/p&gt;
&lt;p&gt;Esto es especialmente importante en producción. El Q&amp;amp;A interno empresarial no solo necesita producir algo que parezca correcto; también debe ser verificable. Para políticas, cumplimiento, finanzas, documentación técnica y soporte al cliente, las citas y la trazabilidad son casi obligatorias.&lt;/p&gt;
&lt;h3 id=&#34;4-flujo-rag-automatizado&#34;&gt;4. Flujo RAG automatizado
&lt;/h3&gt;&lt;p&gt;RAGFlow convierte el ciclo de vida RAG en un flujo más completo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crear una base de conocimiento&lt;/li&gt;
&lt;li&gt;Subir o sincronizar datos&lt;/li&gt;
&lt;li&gt;Parsear documentos&lt;/li&gt;
&lt;li&gt;Revisar y ajustar chunks&lt;/li&gt;
&lt;li&gt;Configurar modelos LLM y embedding&lt;/li&gt;
&lt;li&gt;Ejecutar recuperación multipath y reranking&lt;/li&gt;
&lt;li&gt;Crear asistentes de chat&lt;/li&gt;
&lt;li&gt;Integrar mediante APIs en sistemas de negocio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso lo acerca más a una plataforma RAG que a una librería aislada. Para equipos importan tanto la UI como la API: personas no técnicas pueden mantener la base de conocimiento y los ingenieros pueden integrar la capacidad en sistemas existentes.&lt;/p&gt;
&lt;h3 id=&#34;5-extensiones-de-agent-mcp-y-workflow&#34;&gt;5. Extensiones de Agent, MCP y workflow
&lt;/h3&gt;&lt;p&gt;Las actualizaciones recientes de RAGFlow ya incluyen Agentic workflow, MCP, Agent Memory y componentes de ejecución de código. Eso sugiere que ya no se limita al Q&amp;amp;A tradicional de bases de conocimiento y también se mueve hacia escenarios orientados a agentes.&lt;/p&gt;
&lt;p&gt;Un patrón típico es que un agente use RAGFlow como capa fiable de conocimiento empresarial: recuperar contexto cuando lo necesita, generar respuestas con citas y combinarlo con herramientas o pasos de workflow cuando sea necesario.&lt;/p&gt;
&lt;h2 id=&#34;03-flujo-básico-de-uso&#34;&gt;03 Flujo básico de uso
&lt;/h2&gt;&lt;p&gt;Según la documentación oficial de quickstart, el uso común de RAGFlow puede resumirse en estos pasos.&lt;/p&gt;
&lt;h3 id=&#34;1-preparar-el-entorno&#34;&gt;1. Preparar el entorno
&lt;/h3&gt;&lt;p&gt;Los requisitos básicos listados en el README oficial son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU &amp;gt;= 4 cores&lt;/li&gt;
&lt;li&gt;RAM &amp;gt;= 16 GB&lt;/li&gt;
&lt;li&gt;Disk &amp;gt;= 50 GB&lt;/li&gt;
&lt;li&gt;Docker &amp;gt;= 24.0.0&lt;/li&gt;
&lt;li&gt;Docker Compose &amp;gt;= v2.26.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si quieres usar el sandbox para el ejecutor de código, también necesitas &lt;code&gt;gVisor&lt;/code&gt;. Otra nota práctica es que las imágenes Docker oficiales apuntan principalmente a plataformas x86. Para ARM64, la documentación recomienda construir la imagen por cuenta propia.&lt;/p&gt;
&lt;h3 id=&#34;2-clonar-el-proyecto&#34;&gt;2. Clonar el proyecto
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/infiniflow/ragflow.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ragflow/docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-revisar-vmmax_map_count&#34;&gt;3. Revisar &lt;code&gt;vm.max_map_count&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;El despliegue de RAGFlow depende de componentes como Elasticsearch u OpenSearch, así que en Linux normalmente hay que verificar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl vm.max_map_count
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si el valor está por debajo de &lt;code&gt;262144&lt;/code&gt;, puedes configurarlo temporalmente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w vm.max_map_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;262144&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres que persista tras reiniciar, añádelo a &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;4-arrancar-con-docker-compose&#34;&gt;4. Arrancar con Docker Compose
&lt;/h3&gt;&lt;p&gt;Puedes iniciar directamente el modo CPU:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres aceleración GPU para tareas DeepDoc, el README muestra cómo activar &lt;code&gt;DEVICE=gpu&lt;/code&gt; en &lt;code&gt;.env&lt;/code&gt; antes del arranque:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;1i DEVICE=gpu&amp;#39;&lt;/span&gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego inspecciona los logs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f docker-ragflow-cpu-1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cuando los servicios estén listos, abre la dirección de la máquina en el navegador. Con la configuración predeterminada suele ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP_OF_YOUR_MACHINE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-configurar-claves-api-de-modelos&#34;&gt;5. Configurar claves API de modelos
&lt;/h3&gt;&lt;p&gt;RAGFlow necesita configuración de LLM y modelos de embedding. El README menciona elegir la fábrica LLM predeterminada en &lt;code&gt;service_conf.yaml.template&lt;/code&gt; y actualizar el &lt;code&gt;API_KEY&lt;/code&gt; correspondiente.&lt;/p&gt;
&lt;p&gt;En la práctica, necesitas configurar modelos según tu proveedor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modelo de chat&lt;/li&gt;
&lt;li&gt;Modelo de embedding&lt;/li&gt;
&lt;li&gt;Modelo de rerank&lt;/li&gt;
&lt;li&gt;Modelo multimodal, si quieres entender imágenes dentro de PDFs o DOCX&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-crear-la-base-de-conocimiento-y-subir-documentos&#34;&gt;6. Crear la base de conocimiento y subir documentos
&lt;/h3&gt;&lt;p&gt;Después de arrancar el servicio, el flujo típico es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Iniciar sesión en la Web UI.&lt;/li&gt;
&lt;li&gt;Crear un dataset o base de conocimiento.&lt;/li&gt;
&lt;li&gt;Subir documentos o configurar una sincronización de fuente de datos.&lt;/li&gt;
&lt;li&gt;Esperar a que termine el parsing.&lt;/li&gt;
&lt;li&gt;Inspeccionar los chunks y ajustarlos si hace falta.&lt;/li&gt;
&lt;li&gt;Crear un asistente de chat y asociar la base de conocimiento.&lt;/li&gt;
&lt;li&gt;Probar calidad de respuesta y fuentes de cita.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si necesitas integrarlo con un sistema de negocio, puedes continuar con la API o SDK de RAGFlow y conectar recuperación y chat a tu propia aplicación.&lt;/p&gt;
&lt;h2 id=&#34;04-escenarios-adecuados&#34;&gt;04 Escenarios adecuados
&lt;/h2&gt;&lt;p&gt;RAGFlow encaja con necesidades como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q&amp;amp;A de bases de conocimiento internas empresariales&lt;/li&gt;
&lt;li&gt;Manuales de producto, documentación técnica y recuperación de FAQ&lt;/li&gt;
&lt;li&gt;Asistentes de soporte al cliente y preventa&lt;/li&gt;
&lt;li&gt;Q&amp;amp;A trazable sobre contratos, informes y políticas&lt;/li&gt;
&lt;li&gt;Manejo unificado de materiales multiformato&lt;/li&gt;
&lt;li&gt;Equipos que quieren mantenimiento vía UI e integración API&lt;/li&gt;
&lt;li&gt;Sistemas que quieren usar RAG como capa de contexto para agentes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es especialmente adecuado cuando los formatos documentales son complejos, las citas importan y las personas quieren inspeccionar o intervenir en los resultados de parsing.&lt;/p&gt;
&lt;h2 id=&#34;05-qué-vigilar&#34;&gt;05 Qué vigilar
&lt;/h2&gt;&lt;p&gt;Primero, RAGFlow no es un script ligero. Tiene requisitos reales de infraestructura. La recomendación oficial es al menos 4 cores CPU, 16 GB de RAM y 50 GB de disco. Si solo quieres Q&amp;amp;A sobre una pequeña cantidad de Markdown, una plataforma completa puede ser innecesaria.&lt;/p&gt;
&lt;p&gt;Segundo, la calidad documental sigue importando. RAGFlow puede mejorar parsing y chunking, pero no puede hacer mágicamente fiable material fuente de baja calidad, obsoleto o contradictorio. El gobierno de la base de conocimiento sigue siendo importante antes de producción.&lt;/p&gt;
&lt;p&gt;Tercero, la selección de modelos afecta directamente la calidad. Las elecciones de embedding, rerank, chat y multimodal influyen en recuperación y respuestas. RAGFlow da el flujo, pero el resultado final sigue dependiendo de datos, modelos y ajuste.&lt;/p&gt;
&lt;p&gt;Cuarto, los despliegues en producción deben cuidar permisos y seguridad de datos. Las bases de conocimiento empresariales suelen contener documentos internos, así que el modelo de despliegue, control de acceso, logs, claves API y políticas de datos del proveedor deben diseñarse de antemano.&lt;/p&gt;
&lt;h2 id=&#34;06-conclusión-rápida&#34;&gt;06 Conclusión rápida
&lt;/h2&gt;&lt;p&gt;La fortaleza de RAGFlow es convertir las partes más difíciles de RAG en capacidades de plataforma: parsing de documentos complejos, chunking explicable, grounding de citas, recuperación multipath, reranking, configuración de modelos, Web UI, acceso API y extensiones de agentes.&lt;/p&gt;
&lt;p&gt;Si necesitas una base de conocimiento empresarial verificable y mantenible que pueda conectarse a sistemas de negocio, RAGFlow es más completo que una configuración de &amp;ldquo;base vectorial más chat UI simple&amp;rdquo;. En cambio, si solo necesitas Q&amp;amp;A personal a pequeña escala sobre datos simples, un framework RAG más ligero puede ser más eficiente en recursos.&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Proyecto GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/infiniflow/ragflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentación oficial: &lt;a class=&#34;link&#34; href=&#34;https://ragflow.io/docs/dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ragflow.io/docs/dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Demo online: &lt;a class=&#34;link&#34; href=&#34;https://cloud.ragflow.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.ragflow.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
