arman77mxx/Valida-Pdf-Mx
1
1# De mexico para el mundo, arman77mx@gmail.com2import PyPDF23import os4import re5from sklearn.feature_extraction.text import TfidfVectorizer6from sklearn.model_selection import train_test_split7from sklearn.svm import SVC8from sklearn.metrics import classification_report9import pickle10 11# Función para extraer texto de un PDF12def extract_text_from_pdf(pdf_path):13 with open(pdf_path, 'rb') as file:14 reader = PyPDF2.PdfReader(file)15 text = ''16 for page in reader.pages:17 text += page.extract_text()18 return text19 20# Directorios de PDFs etiquetados21pdf_dirs = {22 'si-firma': '/content/si-firma',23 'no-firma': '/content/no-firma'24}25 26# Extracción y etiquetado de textos27data = []28labels = []29 30for label, pdf_dir in pdf_dirs.items():31 for pdf_file in os.listdir(pdf_dir):32 if pdf_file.endswith('.pdf'):33 pdf_path = os.path.join(pdf_dir, pdf_file)34 text = extract_text_from_pdf(pdf_path)35 text = re.sub(r'\s+', ' ', text).strip() # Preprocesamiento básico36 data.append(text)37 labels.append(label)38 39# Vectorización de textos40vectorizer = TfidfVectorizer()41X = vectorizer.fit_transform(data)42y = labels43 44# División de datos en entrenamiento y prueba45X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)46 47# Entrenamiento del modelo48model = SVC(kernel='linear')49model.fit(X_train, y_train)50 51# Evaluación del modelo52y_pred = model.predict(X_test)53print(classification_report(y_test, y_pred))54 55# Guardar el vectorizador56with open('vectorizer.pkl', 'wb') as file:57 pickle.dump(vectorizer, file)58 59# Guardar el modelo60with open('model.pkl', 'wb') as file:61 pickle.dump(model, file)62 