| <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>ππ</text></svg>"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#0a0a0f"/><meta name="description" content="Luna OCR - Advanced Text Extraction from PDFs and Images"/><title>ππ Luna OCR - Text Extraction</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Martian+Mono:wght@100..800&display=swap" rel="stylesheet"><meta property="og:title" content="Luna OCR - Text Extraction"/><meta property="og:description" content="Extract text from PDFs and images using advanced Luna processing. Support for Thai language and structured formatting."/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><style>body{margin:0;background:#141414!important;color:#fff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Inter,sans-serif;overflow:hidden}#loading{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;background:#141414!important;z-index:99999!important;display:flex!important;align-items:center;justify-content:center;opacity:1!important}#root{opacity:0;transition:opacity .3s ease}body.loaded #root{opacity:1}body.loaded #loading{display:none!important}</style><script defer="defer" src="/static/js/main.71627d41.js"></script><link href="/static/css/main.54f85c75.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="loading" class="loading-container"><div class="a-hole"><canvas class="js-canvas"></canvas><div class="aura"></div></div></div><div id="root"></div><script>document.addEventListener("DOMContentLoaded",function(){const t=document.querySelector(".js-canvas");if(!t)return;const e=t.getContext("2d");let n;function o(){const e=t.parentElement.getBoundingClientRect();t.width=e.width,t.height=e.height}o(),window.addEventListener("resize",o);const a=[];for(let e=0;e<25;e++)a.push({x:Math.random()*t.width,y:Math.random()*t.height,vx:1.5*(Math.random()-.5),vy:1.5*(Math.random()-.5),size:2*Math.random()+1,opacity:.6*Math.random()+.3});function i(){e.clearRect(0,0,t.width,t.height),a.forEach(n=>{n.x+=n.vx,n.y+=n.vy,n.x<0&&(n.x=t.width),n.x>t.width&&(n.x=0),n.y<0&&(n.y=t.height),n.y>t.height&&(n.y=0),e.fillStyle=`rgba(255, 255, 255, ${n.opacity})`,e.beginPath(),e.arc(n.x,n.y,n.size,0,2*Math.PI),e.fill()}),n=requestAnimationFrame(i)}function d(){cancelAnimationFrame(n),document.body.classList.add("loaded")}setTimeout(()=>{i()},500);let r=!1;const c=()=>{const t=document.getElementById("root"),e=t?.querySelector(".app-header"),n=t?.querySelector(".logo");t&&t.children.length>0&&(e||n)&&!r&&(r=!0,setTimeout(d,200))},h=setInterval(()=>{c(),r&&clearInterval(h)},100);setTimeout(()=>{r||d()},800),"complete"===document.readyState&&setTimeout(c,100)})</script></body></html> |