Dada cualquier imagen de un documento escaneado, quiero verificar si no es una página vacía. Sé que puedo enviarlo a AWS Textract, pero me costará dinero por nada.

Sé que puedo usar pytesseract pero ¿quizás haya una solución más elegante y simple? O, dado un archivo .html que representa el texto de la imagen, ¿cómo verificar que muestra una página en blanco?

-2
SteveS 25 jun. 2020 a las 19:48

2 respuestas

La mejor respuesta

PyMuPDF sería otra opción para usted si necesita guardar las molestias sin pasar por Pytesseract. Aquí hay un ejemplo de cómo podría extraer texto de una imagen escaneada o un formato limpio de PDF:

import fitz

input_file = 'path/to/your/file'
pdf_file = input_file
doc = fitz.open(pdf_file) # open pdf files using fitz bindings 
noOfPages = doc.pageCount # Here is how you get number of pages 

for pageNo in range(noOfPages):
    page = doc.loadPage(pageNo) # number of pages
    blocks = page.getText("blocks")
    blocks.sort(key=lambda block: block[3])  # sort by 'y1' values

    for block in blocks:
        print(block[4])  # print the lines of this block or do your check here 

page.getText(option) es probablemente su mejor apuesta y option es una cadena que controla el tipo de salida. Puede elegir entre cosas como texto sin formato, palabras sueltas con información de posición, salida de cadenas HTML o XML, contenido completo de la página en formato dict de Python y demás.

1
liamsuma 25 jun. 2020 a las 17:46

Podemos usar pytesseract para esta aplicación umbralizando la imagen y pasándola a tesseract. Sin embargo, si tiene un archivo .html que representa el texto de la imagen, puede usar beautifulsoup para extraer texto de él y verificar si está vacío. Sin embargo, este es un enfoque de ida y vuelta.

1
Vishal Tennyson 25 jun. 2020 a las 16:54