NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name PDF OCR - Recognize Text from Documents // @name:es PDF OCR - Reconocimiento de Texto de Documentos // @name:de PDF OCR - Texterkennung aus Dokumenten // @name:fr PDF OCR - Reconnaissance de Texte de Documents // @name:it PDF OCR - Riconoscimento del Testo dai Documenti // @name:pt PDF OCR - Reconhecer Texto de Documentos // @name:ru PDF OCR - Распознавание Текста из Документов // @name:ja PDF OCR - ドキュメントからテキストを認識 // @name:ko PDF OCR - 문서에서 텍스트 인식 // @name:ar PDF OCR - التعرف على النصوص من الوثائق // @name:tr PDF OCR - Belgelerden Metin Tanıma // @name:nl PDF OCR - Tekstherkenning uit Documenten // @name:sv PDF OCR - Känna Igen Text från Dokument // @name:da PDF OCR - Genkende Tekst fra Dokumenter // @name:zh PDF OCR - 从文档识别文本 // @name:zh-TW PDF OCR - 從文件識別文本 // @description Online provides accurate PDF to text recognition function, covering 180+ languages and supports small languages. // @description:es En línea proporciona una función de reconocimiento de texto de PDF precisa, que cubre más de 180 idiomas y soporta idiomas minoritarios. // @description:de Online bietet eine genaue PDF-zu-Text-Erkennungsfunktion, die 180+ Sprachen umfasst und kleinere Sprachen unterstützt. // @description:fr En ligne, fournit une fonction de reconnaissance précise de texte PDF, couvrant plus de 180 langues et prenant en charge les petites langues. // @description:it Online fornisce una funzione di riconoscimento del testo da PDF accurata, coprendo oltre 180 lingue e supporta piccole lingue. // @description:pt Online proporciona uma função de reconhecimento de texto de PDF precisa, cobrindo mais de 180 idiomas e suporta línguas pequenas. // @description:ru Онлайн предоставляет точную функцию распознавания текста из PDF, покрывая более 180 языков и поддерживает малые языки. // @description:ja オンラインでは正確なPDFからテキストへの認識機能を提供し、180以上の言語に対応し、小さな言語もサポートしています。 // @description:ko 온라인은 정확한 PDF에서 텍스트로의 인식 기능을 제공하며, 180개 이상의 언어를 포괄하고 소규모 언어도 지원합니다。 // @description:ar يوفر الإنترنت وظيفة التعرف على النصوص من PDF بدقة، مغطية أكثر من 180 لغة ويدعم اللغات الصغيرة. // @description:tr Çevrimiçi, 180'den fazla dili kapsayan ve küçük dilleri destekleyen doğru bir PDF'den metin tanıma fonksiyonu sağlar. // @description:nl Online biedt een nauwkeurige functie voor PDF naar tekst herkenning, die 180+ talen omvat en ondersteunt kleine talen. // @description:sv Online tillhandahåller en exakt PDF till textigenkänningsfunktion som täcker över 180 språk och stöder små språk. // @description:da Online tilbyder en nøjagtig PDF til tekstgenkendelsesfunktion, der dækker over 180 sprog og understøtter små sprog. // @description:zh 在线提供精确的PDF到文本识别功能,覆盖180多种语言,支持小语种。 // @description:zh-TW 在線提供精確的PDF到文本識別功能,涵蓋180多種語言,支持小語種。 // @namespace http://gpicy.com // @author gpicy // @version 1.3.2 // @match *://*/* // @supportURL https://gpicy.com/en-US/pdf-ocr?utm_source=openuserjs // @grant none // @run-at document-start // @license Apache-2.0 // ==/UserScript== (function() { const floatingMenu = document.createElement('div'); floatingMenu.style.cssText = ` position: fixed; left: 0; top: 50%; transform: translateY(-50%); background: linear-gradient(135deg, rgba(132, 16, 145, 0.45), rgba(222, 0, 114, 0.45)); padding: 10px; border-radius: 0 5px 5px 0; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); z-index: 10000; `; const closeButton = document.createElement('div'); closeButton.innerHTML = `×`; // "×" symbol closeButton.style.cssText = ` position: absolute; top: 0; right: 0; width: 30px; height: 30px; margin-right: -10px; margin-top: -10px; border-radius: 15px; /* Makes it round */ background-color: #FFF; color: #000; text-align: center; line-height: 30px; cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); `; closeButton.onclick = function() { document.body.removeChild(floatingMenu); }; const menuTranslations = { 'en': { 'Image OCR': '🖼️ Image OCR', 'PDF OCR': '📄 PDF OCR', 'Lossless Image Enlarge': '🔍 Lossless Image Enlarge', 'Background Removal': '🚫 Background Removal', 'Object Removal': '🧹 Object Removal', 'Photo Colorization': '🎨 Photo Colorization', 'Portrait Restoration': '👥 Portrait Restoration' }, 'fr': { // French 'Image OCR': '🖼️ OCR d\'Image', 'PDF OCR': '📄 OCR de PDF', 'Lossless Image Enlarge': '🔍 Agrandissement d\'Image Sans Perte', 'Background Removal': '🚫 Suppression de l\'Arrière-plan', 'Object Removal': '🧹 Retrait d\'Objet', 'Photo Colorization': '🎨 Colorisation de Photo', 'Portrait Restoration': '👥 Restauration de Portrait' }, 'de': { // German 'Image OCR': '🖼️ Bild OCR', 'PDF OCR': '📄 PDF OCR', 'Lossless Image Enlarge': '🔍 Verlustfreie Bildvergrößerung', 'Background Removal': '🚫 Hintergrund Entfernen', 'Object Removal': '🧹 Objektentfernung', 'Photo Colorization': '🎨 Fotokolorierung', 'Portrait Restoration': '👥 Porträtrestaurierung' }, 'es': { // Spanish 'Image OCR': '🖼️ OCR de Imagen', 'PDF OCR': '📄 OCR de PDF', 'Lossless Image Enlarge': '🔍 Ampliación de Imagen Sin Pérdida', 'Background Removal': '🚫 Eliminación de Fondo', 'Object Removal': '🧹 Eliminación de Objeto', 'Photo Colorization': '🎨 Colorización de Fotos', 'Portrait Restoration': '👥 Restauración de Retrato' }, 'it': { // Italian 'Image OCR': '🖼️ OCR Immagine', 'PDF OCR': '📄 OCR PDF', 'Lossless Image Enlarge': '🔍 Ingrandimento Immagine Senza Perdite', 'Background Removal': '🚫 Rimozione dello Sfondo', 'Object Removal': '🧹 Rimozione Oggetto', 'Photo Colorization': '🎨 Colorazione Foto', 'Portrait Restoration': '👥 Restauro Ritratto' }, 'pt': { // Portuguese 'Image OCR': '🖼️ OCR de Imagem', 'PDF OCR': '📄 OCR de PDF', 'Lossless Image Enlarge': '🔍 Ampliação de Imagem sem Perda', 'Background Removal': '🚫 Remoção de Fundo', 'Object Removal': '🧹 Remoção de Objeto', 'Photo Colorization': '🎨 Coloração de Foto', 'Portrait Restoration': '👥 Restauração de Retrato' }, 'ja': { // Japanese 'Image OCR': '🖼️ 画像OCR', 'PDF OCR': '📄 PDF OCR', 'Lossless Image Enlarge': '🔍 ロスレス画像拡大', 'Background Removal': '🚫 背景削除', 'Object Removal': '🧹 オブジェクト削除', 'Photo Colorization': '🎨 写真着色', 'Portrait Restoration': '👥 ポートレート修復' }, 'nl': { // Dutch 'Image OCR': '🖼️ Afbeelding OCR', 'PDF OCR': '📄 PDF OCR', 'Lossless Image Enlarge': '🔍 Verliesvrije Afbeelding Vergroten', 'Background Removal': '🚫 Achtergrond Verwijderen', 'Object Removal': '🧹 Object Verwijderen', 'Photo Colorization': '🎨 Foto Inkleuren', 'Portrait Restoration': '👥 Portret Restauratie' }, 'ru': { // Russian 'Image OCR': '🖼️ OCR изображений', 'PDF OCR': '📄 OCR PDF', 'Lossless Image Enlarge': '🔍 Безубыточное Увеличение Изображения', 'Background Removal': '🚫 Удаление Фона', 'Object Removal': '🧹 Удаление Объектов', 'Photo Colorization': '🎨 Колоризация Фото', 'Portrait Restoration': '👥 Реставрация Портретов' }, 'ko': { // Korean 'Image OCR': '🖼️ 이미지 OCR', 'PDF OCR': '📄 PDF OCR', 'Lossless Image Enlarge': '🔍 손실 없는 이미지 확대', 'Background Removal': '🚫 배경 제거', 'Object Removal': '🧹 객체 제거', 'Photo Colorization': '🎨 사진 채색', 'Portrait Restoration': '👥 초상화 복원' }, 'ar': { // Arabic 'Image OCR': '🖼️ OCR للصور', 'PDF OCR': '📄 OCR لملفات PDF', 'Lossless Image Enlarge': '🔍 تكبير الصورة بدون فقدان', 'Background Removal': '🚫 إزالة الخلفية', 'Object Removal': '🧹 إزالة الكائن', 'Photo Colorization': '🎨 تلوين الصور', 'Portrait Restoration': '👥 استعادة الصور الشخصية' }, 'th': { // Thai 'Image OCR': '🖼️ OCR ภาพ', 'PDF OCR': '📄 OCR ไฟล์ PDF', 'Lossless Image Enlarge': '🔍 ขยายภาพแบบไม่สูญเสียข้อมูล', 'Background Removal': '🚫 ลบพื้นหลัง', 'Object Removal': '🧹 ลบวัตถุ', 'Photo Colorization': '🎨 การตกแต่งสีภาพถ่าย', 'Portrait Restoration': '👥 การซ่อมแซมภาพเหมือน' }, 'zh': { // Simplified Chinese 'Image OCR': '🖼️ 图像文字识别', 'PDF OCR': '📄 PDF文字识别', 'Lossless Image Enlarge': '🔍 无损放大图像', 'Background Removal': '🚫 背景移除', 'Object Removal': '🧹 物体移除', 'Photo Colorization': '🎨 照片上色', 'Portrait Restoration': '👥 人像修复' }, 'zh-TW': { // Traditional Chinese 'Image OCR': '🖼️ 圖像文字識別', 'PDF OCR': '📄 PDF文字識別', 'Lossless Image Enlarge': '🔍 無損放大圖像', 'Background Removal': '🚫 背景移除', 'Object Removal': '🧹 物體移除', 'Photo Colorization': '🎨 照片上色', 'Portrait Restoration': '👥 人像修復' }, }; // Detecting your browser's preferred language function detectLanguage() { const supportedLangs = Object.keys(menuTranslations); const defaultLang = 'en'; const userLangs = navigator.languages.map(lang => lang.split('-')[0]); for (let lang of userLangs) { if (supportedLangs.includes(lang)) { return lang; } } return defaultLang; } // Get the language translation of the current user const currentLang = detectLanguage(); const translations = menuTranslations[currentLang]; // List of features and associated URLs const features = [ { icon: '🖼️', name: 'Image OCR', url: 'https://gpicy.com/en-US/image-ocr?utm_source=openuserjs', desc: 'Image recognition to text' }, { icon: '📄', name: 'PDF OCR', url: 'https://gpicy.com/en-US/pdf-ocr?utm_source=openuserjs', desc: 'PDF recognition into text' }, { icon: '🔍', name: 'Lossless Image Enlarge', url: 'https://gpicy.com/en-US/lossless-image-enlarge?utm_source=openuserjs', desc: 'Lossless magnification of AI image' }, { icon: '🚫', name: 'Background Removal', url: 'https://gpicy.com/en-US/background-removal?utm_source=openuserjs', desc: 'AI Background Removal' }, { icon: '🧹', name: 'Object Removal', url: 'https://gpicy.com/en-US/object-removal?utm_source=openuserjs', desc: 'AI Object Removal' }, { icon: '🎨', name: 'Photo Colorization', url: 'https://gpicy.com/en-US/photo-colorization?utm_source=openuserjs', desc: 'AI Photo Colorization' }, { icon: '👥', name: 'Portrait Restoration', url: 'https://gpicy.com/en-US/portrait-restoration?utm_source=openuserjs', desc: 'AI Portrait Restoration' }, ]; floatingMenu.appendChild(closeButton); features.forEach(feature => { const button = document.createElement('button'); const translatedName = translations[feature.name] || feature.name; button.innerHTML = `${translatedName}`; button.style.cssText = ` display: block; width: 100%; margin: 5px 0; background-color: #FFF; color: #000; border: none; border-radius: 3px; padding: 10px; cursor: pointer; text-align: left; transition: transform 0.3s ease, box-shadow 0.3s ease; `; button.onmouseenter = function() { this.style.transform = 'translateX(10px)'; this.style.boxShadow = '3px 3px 10px rgba(0, 0, 0, 0.2)'; }; button.onmouseleave = function() { this.style.transform = 'translateX(0)'; this.style.boxShadow = 'none'; }; button.onclick = function() { window.open(feature.url, '_blank'); }; const tooltip = document.createElement('span'); tooltip.textContent = feature.desc; tooltip.style.cssText = ` visibility: hidden; width: 120px; background-color: black; color: #fff; text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; bottom: 125%; left: 50%; margin-left: -60px; opacity: 0; transition: opacity 0.3s; `; button.appendChild(tooltip); button.onmouseover = function() { tooltip.style.visibility = 'visible'; tooltip.style.opacity = '1'; }; button.onmouseout = function() { tooltip.style.visibility = 'hidden'; tooltip.style.opacity = '0'; }; floatingMenu.appendChild(button); }); document.body.appendChild(floatingMenu); })();