CoolFace
Modelpublic

pemix09/paperstack_document_data_retrieval

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes11downloads
bing-scrapper-all.py132 linesDownload Raw Back to root
1import os2import requests3from bs4 import BeautifulSoup4import json5import time6import random7 8# --- KONFIGURACJA ---9OUTPUT_DIR = "scan-candidates"10LIMIT = 20  # Liczba zdjęć na kategorię11 12# Agresywne zapytania nakierowane na wypełnione dokumenty13CATEGORIES = {14    # --- FINANCIAL ---15    "pit11": "PIT-11 przykład wypełnienia skan",16    "pit37": "PIT-37 wypełniony formularz dane",17    "pit36": "PIT-36 uzupełniony przykład",18    "pit36L": "PIT-36L wypełniony skan",19    "pit28": "PIT-28 wypełniona deklaracja",20    "pit38": "PIT-38 przykład uzupełniony",21    "pit39": "PIT-39 przykładowe dane",22    "pit5": "PIT-5 wypełniony formularz skan",23    "pit8C": "PIT-8C wypełniony dane",24    "vat7": "VAT-7 deklaracja wypełniona przykład",25    "cit8": "CIT-8 uzupełniony formularz",26    "pcc3": "PCC-3 wypełniony przykład",27    "invoice": "faktura vat wypełniona dane skan",28    "proformaInvoice": "faktura proforma uzupełniona dane",29    "receipt": "paragon fiskalny zdjęcie realne",30    "utilityBill": "rachunek za prąd uzupełniony dane",31    "bankStatement": "wyciąg bankowy realny przykład",32    "loanAgreement": "umowa pożyczki wypełniona dane",33    "insurancePolicy": "polisa ubezpieczeniowa wypełniona skan",34 35    # --- LEGAL ---36    "notarialDeed": "akt notarialny skan z danymi",37    "courtJudgment": "wyrok sądu wypełniony uzupełniony",38    "powerOfAttorney": "pełnomocnictwo uzupełnione dane",39    "employmentContract": "umowa o pracę wypełniona dane",40    "mandateContract": "umowa zlecenie uzupełniona przykładowa",41    "taskContract": "umowa o dzieło wypełniona skan",42    "b2bContract": "umowa B2B wypełniona dane",43    "nonCompeteAgreement": "zakaz konkurencji uzupełniony przykład",44    "lawsuit": "pozew cywilny wypełniony skan",45 46    # --- PERSONAL ---47    "idCard": "dowód osobisty specimen dane polska",48    "passport": "paszport polski specimen dane",49    "birthCertificate": "odpis aktu urodzenia wypełniony",50    "marriageCertificate": "akt małżeństwa uzupełniony dane",51    "deathCertificate": "akt zgonu wypełniony przykład",52    "peselConfirmation": "potwierdzenie nadania PESEL wypełnione",53    "drivingLicense": "prawo jazdy specimen polska",54    "schoolCertificate": "świadectwo szkolne wypełnione dane",55    "universityDiploma": "dyplom ukończenia studiów wypełniony",56    "professionalCertificate": "certyfikat zawodowy uzupełniony",57    "cv": "życiorys CV wypełniony dane",58 59    # --- HEALTH ---60    "sickLeave": "zwolnienie lekarskie L4 wypełnione skan",61    "prescription": "recepta lekarska wypisana dane",62    "medicalResults": "wyniki badań laboratoryjnych dane pacjenta",63    "referral": "skierowanie do lekarza uzupełnione",64    "medicalHistory": "karta pacjenta wypełniona skan",65    "vaccinationCard": "karta szczepień uzupełniona",66    "sanitaryBooklet": "książeczka sanepidowska wypełniona",67 68    # --- PROPERTY ---69    "propertyDeed": "akt własności nieruchomości uzupełniony",70    "landRegistry": "księga wieczysta odpis przykład",71    "rentalAgreement": "umowa najmu mieszkania wypełniona dane",72    "registrationCertificate": "dowód rejestracyjny pojazdu uzupełniony",73    "vehicleHistory": "raport historii pojazdu dane",74    "landMap": "mapa geodezyjna skan",75    "technicalInspection": "zaświadczenie o badaniu technicznym wypełnione",76 77    # --- OTHER ---78    "application": "wniosek urzędowy wypełniony skan",79    "certificate": "zaświadczenie o niekaralności uzupełnione",80    "authorization": "upoważnienie wypełnione dane",81}82 83HEADERS = {84    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'85}86 87def download_images(query, folder_name):88    print(f"\n🚀 POBIERANIE WYPEŁNIONYCH: {folder_name.upper()}")89    search_url = f"https://www.bing.com/images/search?q={query.replace(' ', '+')}&form=HDRSC2"90    91    try:92        response = requests.get(search_url, headers=HEADERS, timeout=15)93        soup = BeautifulSoup(response.text, 'html.parser')94        95        target_path = os.path.join(OUTPUT_DIR, folder_name)96        os.makedirs(target_path, exist_ok=True)97 98        links = []99        for a in soup.find_all("a", {"class": "iusc"}):100            if "m" in a.attrs:101                m = json.loads(a["m"])102                links.append(m["murl"])103 104        print(f"  🔍 Linki: {len(links)}")105        106        downloaded = 0107        for url in links:108            if downloaded >= LIMIT: break109            try:110                if any(ext in url.lower() for ext in [".pdf", ".html", ".php"]): continue111                ext = ".jpg" if ".png" not in url.lower() else ".png"112                113                res = requests.get(url, headers=HEADERS, timeout=7)114                if res.status_code == 200 and "text/html" not in res.headers.get('Content-Type', ''):115                    file_name = f"{folder_name}_{downloaded}{ext}"116                    with open(os.path.join(target_path, file_name), "wb") as f:117                        f.write(res.content)118                    print(f"    ✅ [{downloaded+1}/{LIMIT}] {file_name}")119                    downloaded += 1120                    if downloaded % 5 == 0: time.sleep(1)121            except: continue122 123    except Exception as e:124        print(f"  🚨 Błąd: {e}")125 126if __name__ == "__main__":127    os.makedirs(OUTPUT_DIR, exist_ok=True)128    for i, (folder, query) in enumerate(CATEGORIES.items()):129        download_images(query, folder)130        wait = random.uniform(3, 6)131        print(f"😴 Przerwa {wait:.1f}s... ({i+1}/{len(CATEGORIES)})")132        time.sleep(wait)