AmazonS3
tcp/443 tcp/80
Open service 65.8.131.20:443 · pyvisionai.com
2026-01-10 00:45
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Fri, 09 Jan 2026 10:27:13 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 e82859bd3e5e584a3698e67f22415dae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: pwtc5GbB2reQ_nx0FS85Re4twqplYtMqZJ05vvXimTJdYEx36iGsoQ==
Age: 51503
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.20:80 · pyvisionai.com
2026-01-09 22:52
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Fri, 09 Jan 2026 10:27:13 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 f126ea1ed848e1f1d4c478d1f814e2c2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: qfuqc589QBy8Xzs6XOq98RmaGuV2XLzt2lc_i_aMjwIBJnscbUKkhw==
Age: 44736
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.20:443 · pyvisionai.com
2026-01-02 19:19
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Fri, 02 Jan 2026 10:55:58 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 e82859bd3e5e584a3698e67f22415dae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: _9W_SrpFg5YOSah8pk1GYMnhO3RbXxmefsuZRY2Pf9EEjPootIIDLw==
Age: 30216
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.20:80 · pyvisionai.com
2025-12-30 12:07
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Date: Mon, 29 Dec 2025 19:17:36 GMT
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
Server: AmazonS3
X-Cache: Hit from cloudfront
Via: 1.1 3e7af1ef389db8ab4a319bd943f95544.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: cUQJ5I68-aiSSM-qJAy-vCG9JM6o1-0mB0fNeEl8Hxivsnvm5SHLyA==
Age: 60571
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.57:443 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 f126ea1ed848e1f1d4c478d1f814e2c2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: 8VGNNxEslOsDvtAgQde7_bLAgB9Evt4bAcIBgJ7r-O-ks140qF5qlg==
Age: 52180
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.124:443 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 9d48d29ac0d6fbcc29cb164716d39d68.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: WjnVhCpUJFUVgdbPO9R8Bl_eZNuCSH0eAkRlm4CwBjK4VVbIymnmFA==
Age: 52180
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.124:80 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 2455ef8edb3925202de453ceda9f2c14.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: QeAMSDUW_FBYXjh9tk1hYeQv-2-zdYhtimMlFCpXNsS4j6OW2wQN3g==
Age: 52180
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.57:80 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 9d48d29ac0d6fbcc29cb164716d39d68.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: uvRx0OHBR35FMHfXSGcnPMPtuFgczF6Zqy7_DdnInSlHDJX5ZNqjjw==
Age: 52180
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.20:80 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 581599a51772a76c2489c9d094b70226.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: dolQ0a6TAGEH8sPf3fJxOGhhEPerY5BW95-Ptj5iaZgJtdE9qCrVJQ==
Age: 52179
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.122:443 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 f126ea1ed848e1f1d4c478d1f814e2c2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: oShvIOlHxnf3ArqMlNh8CygfTiYbrJvpLeSgWUmgAYmFBxpaq4UmIw==
Age: 52179
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.20:443 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 2ae88352064bd2ee8746477a8b6fb1da.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: mYhPZ4i6NMFG8sDkDqBTISqnrUbuLnkGPV7rwSSf5_wDBSQq9KRRFw==
Age: 52179
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18
Open service 65.8.131.122:80 · pyvisionai.com
2025-12-22 04:39
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 38562
Connection: close
Last-Modified: Thu, 06 Mar 2025 10:09:39 GMT
Server: AmazonS3
Date: Mon, 22 Dec 2025 04:39:21 GMT
ETag: "e42d41d2def7df6fc368f9f13cbf2e82"
X-Cache: Hit from cloudfront
Via: 1.1 62adf6efa9de9ec639541ac293f53aa0.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: CnzamUAZUW9Le9vST4Lyy0SC5fdNUo9rLwU2n8T2TqtjIlpojwTbCg==
Age: 52179
Page title: PyVisionAI
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Advanced document content processing using Vision Language Models">
<meta name="author" content="PyVisionAI Team">
<link rel="canonical" href="https://pyvisionai.dev/">
<link rel="next" href="documentation/getting-started/">
<link rel="icon" href="assets/images/favicon.jpeg">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
<title>PyVisionAI</title>
<link rel="stylesheet" href="assets/stylesheets/main.a40c8224.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="stylesheets/extra.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#pyvisionai-content-extractor-and-image-description-with-vision-llm" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="." title="PyVisionAI" class="md-header__button md-logo" aria-label="PyVisionAI" data-md-component="logo">
<img src="assets/images/logo.jpeg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18