desarrolloasesoreslocales commited on
Commit
bb4c496
1 Parent(s): 90ddf4b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -3
app.py CHANGED
@@ -1,5 +1,60 @@
1
  import gradio as gr
2
  from setfit import SetFitModel
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  def cortar_en_bloques(texto, longitud_bloque):
5
  palabras = texto.split()
@@ -28,9 +83,9 @@ model = SetFitModel.from_pretrained("desarrolloasesoreslocales/SetFitPruebaRecor
28
  def predict(payload):
29
 
30
  recorte_general = ""
31
-
32
  # Crear chunks
33
- chunks = cortar_en_bloques(payload, 150)
34
  first = -1
35
  margin = int(len(chunks) * 0.25)
36
  chunks_removable = chunks[:margin] + chunks[-margin:]
@@ -68,7 +123,7 @@ def predict(payload):
68
  # Crear una interfaz Gradio
69
  iface = gr.Interface(
70
  fn=predict,
71
- inputs=gr.Textbox(),
72
  outputs=gr.Textbox(),
73
  live=False,
74
  title="Recortador de Texto"
 
1
  import gradio as gr
2
  from setfit import SetFitModel
3
+ # Import libraries
4
+ import PyPDF2
5
+ import openpyxl
6
+ import os
7
+ import glob
8
+ import re
9
+ import itertools
10
+ import platform
11
+ from tempfile import TemporaryDirectory
12
+ from pathlib import Path
13
+ import pytesseract
14
+ from pdf2image import convert_from_path
15
+ from PIL import Image
16
+
17
+ def ocrtotext(filename):
18
+ # Almacena todas las páginas del PDF en una variable
19
+ image_file_list = [] # Lista para almacenar los nombres de los archivos de imagen
20
+ PDF_file = filename # Nombre del archivo PDF
21
+ text_file = (f'{filename}.txt') # Nombre del archivo de texto de salida
22
+
23
+ # Parte #1: Convirtiendo el PDF a imágenes
24
+ pdf_pages = convert_from_path(PDF_file, 300)
25
+ # Lee el archivo PDF a 300 DPI
26
+
27
+ # Itera a través de todas las páginas almacenadas arriba
28
+ for page_enumeration, page in enumerate(pdf_pages, start=1):
29
+ # Crea un nombre de archivo para almacenar la imagen
30
+ filename = f"page_{page_enumeration:03}.jpg"
31
+
32
+ # Guarda la imagen de la página en el sistema
33
+ page.save(filename, "JPEG")
34
+ image_file_list.append(filename)
35
+
36
+ # Parte #2: Reconociendo texto desde las imágenes usando OCR
37
+ output = '' # Variable para almacenar el texto reconocido
38
+
39
+ # Abre el archivo en modo de apendizaje para agregar contenido de todas las imágenes al mismo archivo
40
+ with open(text_file, "a") as output_file:
41
+
42
+ # Itera desde 1 hasta el número total de páginas
43
+ for image_file in image_file_list:
44
+
45
+ # Reconoce el texto en la imagen usando pytesseract
46
+ #text = str(((pytesseract.image_to_string(Image.open(image_file), lang="spa"))))
47
+ text = str(((pytesseract.image_to_string(Image.open(image_file)))))
48
+
49
+ # Elimina los guiones al final de las líneas
50
+ text = text.replace("-\n", "")
51
+
52
+ # Agrega el texto reconocido a la variable de salida
53
+ output += text
54
+
55
+ # Escribe el texto reconocido en el archivo de salida
56
+ output_file.write(output)
57
+ return output
58
 
59
  def cortar_en_bloques(texto, longitud_bloque):
60
  palabras = texto.split()
 
83
  def predict(payload):
84
 
85
  recorte_general = ""
86
+ ocr_text = ocrtotext(payload)
87
  # Crear chunks
88
+ chunks = cortar_en_bloques(ocr_text, 150)
89
  first = -1
90
  margin = int(len(chunks) * 0.25)
91
  chunks_removable = chunks[:margin] + chunks[-margin:]
 
123
  # Crear una interfaz Gradio
124
  iface = gr.Interface(
125
  fn=predict,
126
+ inputs=gr.inputs.File(),
127
  outputs=gr.Textbox(),
128
  live=False,
129
  title="Recortador de Texto"