Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

301
Visualizações
Problemas de Tesseract JS para reconocer números

Estoy usando Tesseract JS (v2.1.0 con Tesseract v4.1.1) para reconocer números (uno o más dígitos) en una imagen escaneada que está muy preprocesada (reducción de ruido, blanco y negro) y que sabe dónde están los números.

Sin embargo, cuando ejecuto el reconocimiento, muy a menudo los números de dos dígitos no se reconocen correctamente, por ejemplo:

ingrese la descripción de la imagen aquí

En este ejemplo, el "11" se reconoce como "1".

En la imagen se puede ver

  • La imagen pasó a Tesseract (blanco/negro)
  • Rectángulos coloreados que se pasan como rectangle a Tesseract para reconocer solo en ese rectángulo (pero se agregan después del reconocimiento)
  • Los números reconocidos en la esquina inferior izquierda en cian

Lo que probé hasta ahora:

  • Al principio, la imagen era blanca sobre negro, que cambié invirtiendo la imagen. Eso mejoró drásticamente la precisión.
  • Luego leí que Tesseract necesita un borde alrededor del texto, así que agregué un borde negro en el mismo lugar donde están los rectángulos de colores, pero eso no cambió nada.
  • A también cambió al modo de motor antiguo, ya que se supone que funciona mejor.
  • Agregué la lista blanca de personajes

¿Hay algo que pueda cambiar en las opciones del preprocesamiento para mejorar eso?

Este es el código (partes de él):

 const scheduler = Tesseract.createScheduler(); const workers = createWorkers(16); const canvasElement = document.getElementById('detected-numbers'); await recognizeNumbers(scheduler, workers, canvasElement, rowSpecNumbers, colSpecNumbers); async function recognizeNumbers(scheduler, workers, canvasElement, rowSpecNumbers, colSpecNumbers) { for (const worker of workers) { await worker.load(); await worker.loadLanguage('eng'); await worker.initialize('eng'); await worker.setParameters({ tessedit_ocr_engine_mode: Tesseract.TESSERACT_ONLY, tessedit_char_whitelist: '0123456789', tessedit_pageseg_mode: Tesseract.SINGLE_WORD }) scheduler.addWorker(worker); } await Promise.all(rowSpecNumbers .flat() .map(number => scheduler.addJob('recognize', canvasElement, { rectangle: { left: number.boundingRect.x, top: number.boundingRect.y, width: number.boundingRect.width, height: number.boundingRect.height } }).then(result => number.data = result.data) )); await Promise.all(colSpecNumbers .flat() .map(number => scheduler.addJob('recognize', canvasElement, { rectangle: { left: number.boundingRect.x, top: number.boundingRect.y, width: number.boundingRect.width, height: number.boundingRect.height } }).then(result => number.data = result.data) )); await scheduler.terminate(); }
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda