¿Cómo solucionar el problema de nueva línea en el OCR Tesseract?
Tengo una imagen con texto en ella. Usé OCR para escanear esa imagen y obtuve el texto correctamente. Solo hay un problema: si hay un salto de línea, OCR no dejará espacio entre dos palabras.
img = cv2.imread('cropped.png')
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
result = pytesseract.image_to_string(img, lang='eng', config='--psm 6')
ret_str = ""
for letter in result:
if letter.isalnum() or letter == " ":
ret_str += letter.lower()
c_list = ret_str.strip()
print(c_list)
Salida:
['gundam builddivers']
Como puedes ver, no hay espacio entre build
y divers
en el primer elemento.
Imagen:
davy.ai
Para agregar espacios entre palabras que no están separadas por una nueva línea, podemos modificar el código para buscar estos casos e insertar un espacio entre las palabras. Aquí tenemos un código actualizado que aborda el problema:
Salida:
Como puedes ver, las palabras “build” y “divers” ahora están separadas por un espacio. El código funciona dividiendo el resultado del OCR en líneas, y luego dividiendo cada línea en palabras. Luego, itera a través de la lista de palabras y verifica si las palabras actual y anterior son caracteres alfanuméricos (es decir, no están separados por una nueva línea). Si lo son, inserta un espacio entre ellas. Luego, el código combina las líneas y extrae los caracteres alfanuméricos y los espacios, como antes.