Ollama विज़न वेब स्क्रैपिंग: एक स्थानीय मॉडल के साथ एक स्क्रीनशॉट पढ़ें
Senior Cybersecurity Analyst
TL;DR:
- यह स्थानीय-मॉडल-प्लस-स्क्रीनशॉट संयोजन है, और इस साइट पर मौजूदा गाइड में से कोई भी इसे अकेले कवर नहीं करता। Ollama वेब स्क्रैपिंग रेंडर्ड HTML टेक्स्ट पर एक स्थानीय मॉडल चलाता है, न कि स्क्रीनशॉट पर; एक क्लाउड विज़न API एक स्क्रीनशॉट को पढ़ता है लेकिन प्रति छवि शुल्क लेता है और एक कुंजी की आवश्यकता होती है। यह गाइड एक वास्तविक ब्राउज़र स्क्रीनशॉट के खिलाफ एक स्थानीय, विज़न-सक्षम मॉडल चलाता है — न कोई क्लाउड कुंजी, न कोई प्रति-टोकन बिल, और न ही कोई HTML।
- यहाँ हर रन ने केवल CPU पर Ollama का उपयोग किया, और
ollama psइसे पुष्टि करता है। इस वातावरण में Ollama के लिए कोई GPU ऑफलोड उपलब्ध नहीं है, और कॉल के बीच समय में काफी अंतर होता है — दो अंकों में सेकंड से लेकर कुछ मिनटों तक — इस पर निर्भर करता है कि क्या मॉडल अभी भी मेमोरी में स्थापित है। - Ollama का छवि फ़ील्ड क्लाउड प्रारूप नहीं है। Ollama के
/api/generateमेंimagesफ़ील्ड क्रमशः बिनाdata:image/png;base64,पूर्वfix के कच्चे बेस64 स्ट्रिंग की एक सूची लेता है — जो अधिकांश क्लाउड विज़न APIs द्वारा उपयोग किए जाने वाले OpenAI-संगत वैकल्पिक के विपरीत है। - एक उप-2B विज़न मॉडल कार्य के दोनों सिरों पर विभिन्न तरीकों से अविश्वसनीय है। एक वाक्य में पृष्ठ का वर्णन करने के लिए पूछा गया, इसने एक संरचनात्मक विवरण नामित किया जो वास्तविक पृष्ठ से मेल नहीं खाता। एक संरचित JSON रिकॉर्ड की मांग करते हुए — जो वही कार्य है जिसे क्लाउड विज़न साथी आसानी से हैंडल करता है — इसने प्रॉम्प्ट का अपना प्लेसहोल्डर टेक्स्ट दोहराया, फिर आउटपुट में डूब गया जो बिल्कुल JSON नहीं था।
- स्क्रीनशॉट अभी भी एक वास्तविक रेंडर्ड ब्राउज़र से आता है। Scrapeless Scraping Browser पृष्ठ को CDP के माध्यम से उसी तरह कैप्चर करता है जैसे एक क्लाउड-विज़न पाइपलाइन करेगा; केवल जहां बाद में पिक्सेल पढ़े जाते हैं वहां परिवर्तन होता है।
- फेच साइड पर शुरू करने के लिए स्वतंत्र। app.scrapeless.com पर अपना Scrapeless API कुंजी बनाएं।
क्यों एक स्थानीय मॉडल को स्क्रीनशॉट के साथ जोड़ें
"AI वेब स्क्रैपिंग" के बारे में दो बातें आमतौर पर अलग-अलग सच्ची होती हैं, और Rarely एक साथ। एक स्थानीय मॉडल, जो Ollama के माध्यम से चलाया जाता है, प्रति कॉल कुछ भी नहीं खर्च करता और तीसरे पक्ष को कुछ भी नहीं भेजता — लेकिन इस साइट पर अब तक का स्थानीय-मॉडल गाइड रेंडर्ड HTML टेक्स्ट पढ़ता है, न कि पिक्सेल। एक विज़न मॉडल स्क्रीनशॉट को DOM के बजाय पढ़ता है — लेकिन इस साइट का विज़न-मॉडल गाइड अब तक एक क्लाउड API को कॉल करता है जो प्रति छवि शुल्क लेता है और एक क्लाउड प्रदाता कुंजी की आवश्यकता होती है। यह पोस्ट वह संयोजन है जिसे कोई भी नहीं कवर करता: एक विज़न-सक्षम मॉडल जो पूरी तरह से आपके सामने की मशीन पर चलता है, एक वास्तविक ब्राउज़र स्क्रीनशॉट पढ़ता है, और पाइपलाइन में कहीं भी कोई क्लाउड इनफरेंस बिल नहीं है।
दो मौजूदा गाइड क्या करते हैं, उसके लिए उपयोगी बने रहते हैं। Ollama वेब स्क्रैपिंग सही विकल्प है जब मूल्य जो आपको चाहिए वह पहले से रेंडर्ड DOM में टेक्स्ट है — एक स्थानीय मॉडल एक ट्रिम किए गए HTML स्निपेट पर तेज और सटीक है। इस साइट का GPT विज़न वेब स्क्रैपिंग गाइड सही विकल्प है जब मूल्य वास्तव में दृश्य है और आप इसे पढ़ने के लिए एक सक्षम, भुगतान किए गए मॉडल चाहते हैं। यह गाइड एक तीसरे मामले के लिए है: मूल्य दृश्य है, लेकिन आप शून्य क्लाउड निर्भरता चाहते हैं और इसके लिए क्षमता का व्यापार करने के लिए तैयार हैं। वह व्यापार वास्तविक है, और यह गाइड इसे ईमानदारी से रिपोर्ट करता है न कि केवल उस भाग को दिखाने के लिए जो काम करता है।
आवश्यकताएँ
- Ollama स्थापित और चल रहा है, एक विज़न-सक्षम मॉडल खींचा गया है:
ollama pull moondream। - Python 3.9 या बाद का संस्करण जिसमें
playwrightऔरrequestsहो। - डैशबोर्ड से एक Scrapeless API कुंजी, जिसका निर्यात
SCRAPELESS_API_KEYके रूप में किया गया है। app.scrapeless.com पर एक मुफ्त पाएं। - कोई GPU आवश्यक नहीं है। इस गाइड में हर रन ने केवल CPU पर Ollama का उपयोग किया।
स्थापित करें
bash
pip install playwright requests
ollama pull moondream
playwright इस गाइड में CDP के माध्यम से एक दूरस्थ ब्राउज़र से कनेक्ट करता है, इसलिए किसी स्थानीय क्रोमियम डाउनलोड की आवश्यकता नहीं है। moondream एक कॉम्पैक्ट विज़न-सक्षम मॉडल है — इसे खींचने और चलाने के लिए पर्याप्त छोटा है बिना एक अलग GPU के, जो इस गाइड का पॉइंट है।
कॉन्फ़िगर करें
bash
export SCRAPELESS_API_KEY="your_scrapeless_api_key"
यह पाइपलाइन के लिए केवल एक कुंजी है जो इसकी आवश्यकता होती है। Ollama का स्थानीय API किसी भी क्रेडेंशियल की आवश्यकता नहीं लेता।
स्क्रैपिंग ब्राउज़र के साथ स्क्रीनशॉट कैप्चर करें
स्क्रीनशॉट को अभी भी विश्वसनीय होना चाहिए, इसलिए यह अभी भी एक वास्तविक ब्राउज़र से आता है। Chrome DevTools प्रोटोकॉल के माध्यम से Scrapeless Scraping Browser से कनेक्ट करें, पृष्ठ खोलें और रेंडर्ड व्यूपोर्ट को कैप्चर करें — वही कैप्चर स्टेप जो क्लाउड-विज़न भाई उपयोग करता है, Chrome DevTools प्रोटोकॉल के माध्यम से:
python
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright
def browser_url():
return "wss://browser.scrapeless.com/api/v2/browser?" + urlencode(
{"token": os.environ["SCRAPELESS_API_KEY"], "sessionTTL": 180, "proxyCountry": "US"})
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(browser_url())
page = browser.new_page(viewport={"width": 1280, "height": 900})
page.goto("https://quotes.toscrape.com/", wait_until="networkidle")
png = page.screenshot()
browser.close()
print("screenshot bytes:", len(png))
print("PNG signature ok:", png[:8] == b"\x89PNG\r\n\x1a\n")
text
screenshot bytes: 55462
PNG signature ok: True
अपने मुफ्त योजना पर अपने API कुंजी प्राप्त करें: app.scrapeless.com
एक स्थानीय दृष्टि मॉडल के साथ स्क्रीनशॉट पढ़ें
PNG को Base64-एनकोड करें और इसे सीधे ओलामा के स्थानीय /api/generate एंडपॉइंट पर पोस्ट करें। यही वह जगह है जहां दो अक्ष वास्तव में मिलते हैं: छवि एक वास्तविक क्लाउड-रेन्डर्ड ब्राउज़र से आई है, लेकिन इसे पढ़ने वाला मॉडल कभी भी इस मशीन को नहीं छोड़ता। अनुरोध आकार का दस्तावेज़ीकरण ओलामा API संदर्भ में है — ध्यान दें कि images फ़ील्ड एक साधारण बेस64 स्ट्रिंग लेता है, न कि data:image/png;base64,... URL:
python
import base64, os, time
from urllib.parse import urlencode
import requests
from playwright.sync_api import sync_playwright
def browser_url():
return "wss://browser.scrapeless.com/api/v2/browser?" + urlencode(
{"token": os.environ["SCRAPELESS_API_KEY"], "sessionTTL": 180, "proxyCountry": "US"})
t0 = time.time()
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(browser_url())
page = browser.new_page(viewport={"width": 1280, "height": 900})
page.goto("https://quotes.toscrape.com/", wait_until="networkidle")
png = page.screenshot()
browser.close()
capture_s = round(time.time() - t0, 1)
img_b64 = base64.b64encode(png).decode()
t1 = time.time()
resp = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "moondream",
"prompt": "Describe what this webpage shows in one sentence.",
"images": [img_b64],
"stream": False,
"options": {"temperature": 0, "num_predict": 60},
},
timeout=300,
)
resp.raise_for_status()
data = resp.json()
inference_s = round(time.time() - t1, 1)
print("capture seconds:", capture_s)
print("vision inference seconds:", inference_s)
print("description:", data["response"].strip())
text
capture seconds: 11.5
vision inference seconds: 54.7
description: A webpage titled "Quotes to Scrape" displays a list of quotes and their corresponding tags, organized into five sections.
शीर्षक, उद्धरणों की उपस्थिति, और प्रत्येक के नीचे टैग सभी वास्तविक तत्व हैं जो प्रदर्शित पृष्ठ के हैं। जो विशेष संरचना यह जोड़ता है, "पांच अनुभागों में व्यवस्थित," वास्तविक पृष्ठ की तुलना में सत्यापित नहीं है: quotes.toscrape.com मुख्य पृष्ठ पर दस उद्धरण ब्लॉक प्रदर्शित करता है, बिना किसी समूह में पांच के कुछ भी। मॉडल पृष्ठ के सामान्य विषय को सही ढंग से प्राप्त करता है, एक उद्धरण साइट जिसमें टैग होते हैं, और फिर एक विशिष्ट संरचनात्मक विवरण बताता है जो वास्तव में मौजूद नहीं है।
ollama ps इस प्रकार की कॉल के दौरान रिपोर्ट करता है 100% CPU: इस वातावरण में ओलामा के लिए कोई GPU ऑफलोड उपलब्ध नहीं है। इस तरह की कॉल पर समय भी मॉडल की स्थिति के साथ भिन्न होता है। ओलामा का /api/generate एंडपॉइंट प्रत्येक अनुरोध के बाद keep_alive के लिए एक मॉडल को मेमोरी में बनाए रखता है, जो डिफ़ॉल्ट रूप से 5 मिनट होता है, ऊपर ओलामा API संदर्भ में दस्तावेजीकृत; जब मॉडल अभी भी निवास करता है, तो इसे डिस्क से फिर से लोड करने की आवश्यकता नहीं होती है, और एक ठंडी कॉल, जिसमें कुछ भी निवास नहीं करता है, पहले टोकन के वापस आने से पहले वह लोड समय चुकाती है।
जहां संरचित निष्कर्ष टूटता है
एक कार्यात्मक विवरण विश्वसनीय निष्कर्षण के समान नहीं है। उसी मॉडल से वही सटीक कार्य पूछें जो क्लाउड-दृष्टि भाई एक संयुक्त पास में संभालता है - उद्धरण रिकॉर्ड का एक JSON सारणी - और ईमानदार परिणाम भी इस मार्गदर्शिका में होना चाहिए:
python
import base64, json, os, time
from urllib.parse import urlencode
import requests
from playwright.sync_api import sync_playwright
def browser_url():
return "wss://browser.scrapeless.com/api/v2/browser?" + urlencode(
{"token": os.environ["SCRAPELESS_API_KEY"], "sessionTTL": 180, "proxyCountry": "US"})
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(browser_url())
page = browser.new_page(viewport={"width": 1280, "height": 900})
page.goto("https://quotes.toscrape.com/", wait_until="networkidle")
png = page.screenshot()
browser.close()
img_b64 = base64.b64encode(png).decode()
t1 = time.time()
resp = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "moondream",
"prompt": 'From this screenshot of a quotes page, return JSON '
'{"quotes":[{"author":"...", "text":"..."}]} for the first 3 quotes '
'you can see. Return ONLY JSON.',
"images": [img_b64],
"stream": False,
"format": "json",
"options": {"temperature": 0, "num_predict": 150},
},
timeout=600,
)
resp.raise_for_status()
data = resp.json()
inference_s = round(time.time() - t1, 1)
print("vision inference seconds:", inference_s)
print("raw response:", data["response"][:200])
try:
parsed = json.loads(data["response"])
print("parsed quotes:", len(parsed.get("quotes", [])))
except json.JSONDecodeError as e:
print("JSON parse failed:", e)
text
vision inference seconds: 79.6
raw response: {"quotes":[{"author":"...","text":"..."},{"author":"","text":"","}}] } [0.12, 0.13, 1.0, 0.87] ) ; return [0.12, 0.13, 1.0, 0.87] ; return [0.12, 0.13, 1.0, 0.87] ; return [0.12, 0.13, 1.0, 0.87] ; re
JSON parse failed: Unterminated string starting at: line 1 column 65 (char 64)
पहला ऑब्जेक्ट संकेत के अपने "..." प्लेसहोल्डर सिंटैक्स को शाब्दिक रूप से प्रतिबिंबित करता है, जैसे инструкции में उपविभाग एक मान की तरह होते हैं न कि भरने के लिए एक स्लॉट। दूसरा ऑब्जेक्ट कभी सही ढंग से बंद नहीं होता, और प्रतिक्रिया फिर दोहराए गए चार-नंबर एरे और बेतरतीब return बयानों में भटकने लगती है जिनका उद्धरणों, लेखक, या JSON से कोई संबंध नहीं है - ऐसा आउटपुट जो एक अलग कार्य के बचे हुए जैसे पढ़ता है न कि इस पर टूटकर। इस मार्गदर्शिका के पीछे हर लाइव रन में, अंतर्निहित पैटर्न भी तब तक बना रहा जब तक कि सटीक बकवास आकार नहीं बदलता: कभी भी कोई वास्तविक उद्धरण पाठ या लेखक का नाम वापस नहीं आया, और प्रतिक्रिया कभी भी वैध JSON के रूप में बंद नहीं हुई। यह एक वास्तविक परिणाम है, न कि एक संक्षिप्त लॉग: मोन्ड्रीम एक लगभग 1-बिलियन-पैरामीटर मॉडल है, और वह स्कीमा-पालन व्यवहार जो एक बड़े क्लाउड दृश्य मॉडल को कुछ सेकंड में तीन साफ, सही ढंग से श्रेणीबद्ध रिकॉर्ड लौटाने की अनुमति देता है, ऐसा कुछ नहीं है जो इस छोटे मॉडल को पुन: प्रस्तुत करता है। आउटपुट-लंबाई की सीमा बढ़ाने से पैटर्न ठीक नहीं होता; यह ज्यादातर मॉडल को भटकने के लिए अधिक जगह देता है।
इस साइट का GPT दृष्टि वेब स्क्रैपिंग गाइड उस व्यापार का अन्य अंत दिखाता है। एक होस्टेड मल्टीमॉडल मॉडल, GPT-4o-mini, ओपनएआई की API के माध्यम से चलाया जाता है, जो एक प्ले राइट स्क्रीनशॉट को संरचित उत्पाद और मूल्य क्षेत्रों में बदलता है जो वास्तव में भरता है। वह तुलना, एक बहुत ही सक्षम भुगतान किए गए मॉडल बनाम एक मुफ्त 1-बिलियन-पैरामीटर स्थानीय मॉडल, स्थानीय रूप से चलाने के बिंदु का हिस्सा है।
स्थानीय दृष्टि बनाम क्लाउड दृष्टि बनाम स्थानीय पाठ
इस साइट पर अब तीन गाइड तीन विभिन्न व्यापार-निर्माणों को कवर करते हैं ताकि बिना हाथ से लिखे चयनकर्ताओं के एक पृष्ठ से संरचित डेटा प्राप्त किया जा सके:
| मॉडल स्थान | पढ़ता है | प्रति कॉल लागत | संरचित JSON सटीकता | |
|---|---|---|---|---|
| ओलामा वेब स्क्रैपिंग | स्थानीय | प्रस्तुत एचटीएमएल पाठ | मुफ्त | ट्रिम किए गए एचटीएमएल पर विश्वसनीय |
| GPT दृष्टि वेब स्क्रैपिंग गाइड | क्लाउड | स्क्रीनशॉट | प्रति-छवि, क्लाउड कुंजी आवश्यक | एक बहुत बड़ा भुगतान किया गया मॉडल - इस गाइड में बेंचमार्क नहीं किया गया |
| यह गाइड | स्थानीय | स्क्रीनशॉट | मुफ्त | इस मॉडल आकार पर अस विश्वसनीय |
| तीनों में से कोई भी सार्वभौमिक रूप से सही नहीं है। यदि मान DOM में पाठ है, तो DOM का पार्स करें — एक स्थानीय पाठ मॉडल या एक सरल चयनकर्ता किसी दृष्टि पाइपलाइन की तुलना में तेज और सस्ता है। यदि मान सच में दृश्य है और सटीकता महत्वपूर्ण है, तो एक क्लाउड दृष्टि मॉडल प्रति-छवि लागत को सही ठहराता है। इस छोटे स्थानीय दृष्टि मॉडल का उपयोग एक संकीर्ण मामले के लिए किया गया है: अन्वेषणात्मक या कम-जोखिम पढ़ाई जहाँ एक मानव या अव्यवस्थित जांच कभी-कभी गलत विवरण पकड़ सकती है, न कि एक पाइपलाइन जो आउटपुट पर बिना देखरेख के भरोसा करती है। उपरोक्त साक्ष्य के अनुसार, यह एक ढीले एक-सैंटेंस विवरण और एक सख्त मल्टी-फील्ड स्कीमा दोनों के लिए सच है — असफलता का तरीका हर एक में बस अलग दिखता है। |
निष्कर्ष
एक स्थानीय मॉडल को एक स्क्रीनशॉट के साथ जोड़ना इस साइट के दो मौजूदा मार्गदर्शिकाओं के बीच एक वास्तविक गैप को बंद करता है। पाइपलाइन में कुछ भी क्लाउड मॉडल को छूता नहीं है: स्क्रेपलेस स्क्रेपिंग ब्राउजर अभी भी उसी तरह से पृष्ठ को रेंडर और कैप्चर करता है जैसे कि एक क्लाउड-दृष्टि पाइपलाइन, और ओल्लामा परिणामस्वरूप PNG को पूरी तरह से इस मशीन पर पढ़ता है। साक्ष्य के अनुसार, उस संयोजन का वास्तव में क्या लाभ है, वह दोनों दिशाओं में एक क्लाउड दृष्टि मॉडल की तुलना में संकीर्ण है — एक एक-सेंटेंस विवरण ने एक संरचनात्मक विवरण जोड़ा जो पृष्ठ में नहीं था, और एक सख्त JSON स्कीमा ने पहले अपनी खुद की प्लेसहोल्डर टेक्स्ट को दोहराया फिर ऐसे आउटपुट में भटक गया जो बिल्कुल JSON नहीं था। इस आकार के मॉडल का उपयोग अन्वेषणात्मक पढ़ाई के लिए करें जिसे आप जांचने की योजना बना रहे हैं, न कि एक पाइपलाइन के लिए जो परिणाम पर बिना देखरेख के भरोसा करती है, और जब निष्कर्षण सटीक होना आवश्यक हो तो क्लाउड दृष्टि गाइड का सहारा लें।
स्क्रेपलेस का एक मुफ्त खाता बनाएं एक API कुंजी प्राप्त करने के लिए, स्क्रेपिंग ब्राउजर उत्पाद पृष्ठ की जांच करें कि CDP सत्र क्या समर्थन करता है, और स्क्रेपलेस मूल्य निर्धारण की समीक्षा करें इससे पहले कि आप पैमाने पर ब्राउजर साइड चलाएँ।
हमारा समुदाय में शामिल हों ताकि आप स्थानीय निष्कर्षण पाइपलाइनों का निर्माण करने वाले अन्य डेवलपर्स के साथ अपने नोट्स की तुलना कर सकें: Discord · Telegram。
सामान्य प्रश्न
प्रश्न: इस गाइड और क्लाउड GPT दृष्टि गाइड के बीच असली अंतर क्या है?
जहाँ मॉडल चलता है और इसकी लागत। इस साइट का GPT दृष्टि वेब स्क्रेपिंग गाइड स्क्रीनशॉट को एक API के माध्यम से होस्ट किए गए मल्टीमोडल मॉडल पर भेजता है और प्रति चित्र बिल करता है; यह गाइड उसी प्रकार के स्क्रीनशॉट को localhost पर ओल्लामा के माध्यम से चल रहे मॉडल पर भेजता है, बिना API कुंजी और बिना प्रति-कॉल लागत के। दोनों पिक्सेल पढ़ते हैं, HTML नहीं।
प्रश्न: इस गाइड और स्थानीय ओल्लामा टेक्स्ट-निष्कर्षण गाइड के बीच क्या अंतर है?
मॉडल क्या पढ़ता है। ओल्लामा वेब स्क्रेपिंग रेंडर की गई HTML को लाता है और स्थानीय मॉडल को पार्स करने के लिए टेक्स्ट सौंपता है। यह गाइड मॉडल को कभी भी HTML नहीं भेजता — यह स्थानीय मॉडल को एक स्क्रीनशॉट सौंपता है और इसे छवि पढ़ने के लिए कहता है।
प्रश्न: क्या मुझे एक स्थानीय दृष्टि मॉडल चलाने के लिए GPU की आवश्यकता है?
नहीं, लेकिन इसके बिना इंतजार करना बहुत भिन्न हो सकता है। इस गाइड में हर रन moondream केवल CPU पर ही चला, जो ollama ps द्वारा इनफेरेंस के दौरान 100% CPU को रिपोर्ट करने से पुष्टि हुई, और इस गाइड के पीछे के कॉल समान प्रकार के अनुरोध के लिए दो-अंक के सेकंड से लेकर कुछ मिनटों तक भिन्न थे। ओल्लामा हर अनुरोध के बाद एक मॉडल को keep_alive के लिए रेजीडेंट रखता है (डिफ़ॉल्ट रूप से 5 मिनट), इसलिए जब यह अभी भी लोडेड है तो एक कॉल उस समय को छोड़ता है जो एक ठंडी कॉल चुकाती है — यही अधिकतर स्विंग की व्याख्या करता है। एक GPU जिसे ओल्लामा एक्सेस कर सकता है हर मामले को काफी कम कर देगा।
प्रश्न: ओल्लामा के API में images क्षेत्र क्लाउड दृष्टि अनुरोध से अलग क्यों दिखता है?
क्योंकि यह एक अलग सम्मेलन का उपयोग करता है। ओल्लामा का /api/generate images को बिना प्रीफिक्स के कच्चे बेस64 स्ट्रिंग्स की एक सूची के रूप में लेता है। अधिकांश ओपनएआई-संगत क्लाउड दृष्टि APIs, जिसमें इस साइट के GPT दृष्टि वेब स्क्रेपिंग गाइड में एक शामिल है, एक पूर्ण data:image/png;base64,... URL के अंदर एक image_url सामग्री भाग की अपेक्षा करते हैं। दोनों प्रारूपों के बीच कोड को बिना समायोजन के पोर्ट करना पहला काम है जो टूटता है।
प्रश्न: संरचित निष्कर्षण ने खाली क्षेत्रों को त्रुटि के बजाय क्यों लौटाया?
अनुरोध सफल रहा - ऑल्लामा ने एक 200 के साथ एक response फ़ील्ड लौटाया, इसलिए raise_for_status() कभी सक्रिय नहीं होता। मॉडल ने JSON आकार को भरा जिसे इसे बनाना था लेकिन उसने मानों को नहीं भरा, फिर उसने उस खाली आकार को तब तक दोहराया जब तक आउटपुट-लंबाई की सीमा ने इसे मध्य-धागे में काट नहीं दिया। यह एक मॉडल-क्षमता विफलता है, HTTP विफलता नहीं, और यह ठीक वही है क्यों ऊपर का कोड json.loads() को अलग से चेक करता है बजाय इसके कि 200 का मतलब मान्य, पूर्ण डेटा है।
प्रश्न: क्या एक बड़ा स्थानीय दृष्टि मॉडल संरचित-निकासी समस्या को हल कर सकता है?
संभाविततः, एक लागत पर। एक 7B-श्रेणी का स्थानीय दृष्टि मॉडल जैसे llava:7b के पास एक JSON स्कीमा को सही ढंग से भरने की अधिक क्षमता होती है, लेकिन इसे अर्थपूर्ण रूप से अधिक RAM या VRAM की भी आवश्यकता होती है और समान हार्डवेयर पर प्रति टोकन धीमा होता है। इस गाइड के चारों ओर का व्यापार - वास्तव में मुफ्त, वास्तव में स्थानीय - जैसे-जैसे मॉडल बढ़ता है, इसे बनाए रखना और भी कठिन हो जाता है; किसी बिंदु पर एक क्लाउड दृष्टि मॉडल की प्रति-छवि लागत एक बड़े स्थानीय मॉडल को ठीक से चलाने के लिए आवश्यक हार्डवेयर से सस्ती हो जाती है।
प्रश्न: क्या मुझे इसका उपयोग उत्पादन स्क्रैपिंग पाइपलाइन के लिए करना चाहिए?
इस मॉडल आकार पर बिना पर्यवेक्षण के नहीं। यहां के साक्ष्य के आधार पर, न तो एक वाक्य का विवरण और न ही एक संरचित स्कीमा पूरी तरह से विश्वसनीय वापस आया - विवरण ने एक संरचनात्मक विवरण जोड़ा जो पृष्ठ में नहीं है, और स्कीमा ने अपने स्वयं के प्लेसहोल्डर पाठ को प्रतिध्वनित किया पहले गैर-JSON आउटपुट की ओर बढ़ते हुए। सख्त-स्कीमा निकासी को क्लाउड दृष्टि गाइड या Ollama Web Scraping के साथ DOM पार्सिंग पर रूट करें, और स्थानीय दृष्टि मॉडल जैसे इस एक को शून्य लागत पर अन्वेषणात्मक पढ़ने के लिए रखें जहां एक मानव परिणाम की जांच अभी भी करता है, या यदि इसे स्थानीय रहना है तो एक बड़े स्थानीय मॉडल पर जाएं।
प्रश्न: क्या एक स्थानीय मॉडल के साथ स्क्रीनशॉट पढ़ना कानूनी है?
स्थानीय रूप से मॉडल चलाने से पृष्ठ के लिए संग्रह नियम नहीं बदलते हैं। केवल सार्वजनिक पृष्ठों को कैप्चर करें, साइट की शर्तों का सम्मान करें और रोबोट्स बहिष्करण प्रोटोकॉल द्वारा मानकीकृत रोबोट निर्देशों का पालन करें, और पढ़ने का परिणाम प्राप्त करने के लिए जो मॉडल चलता है उसके स्थान की परवाह किए बिना अनुरोध मात्रा को सीमित रखें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



