Saltar al contenido

¿Existe una biblioteca de OCR que genere coordenadas de palabras que se encuentran dentro de una imagen?

Solución:

La mayoría de los motores de OCR comerciales devolverán posiciones de coordenadas de palabras y caracteres, pero debe trabajar con sus SDK para extraer la información. Incluso Tesseract OCR devolverá información de posición, pero no ha sido fácil llegar a ella. La versión 3.01 lo hará más fácil, pero todavía se está trabajando en una interfaz DLL.

Desafortunadamente, la mayoría de los programas OCR gratuitos utilizan Tesseract OCR en su forma básica y solo informan los resultados ASCII sin procesar.

www.transym.com – Transym OCR – genera coordenadas. www.rerecognition.com – El motor KADMOS devuelve coordenadas.

También Caere Omnipage, Mitek, Abbyy, Charactell regresan posiciones de personajes.

Estoy usando TessNet (un contenedor de Tesseract C #) y obtengo coordenadas de palabras con el siguiente código:

TextWriter tw = new StreamWriter(@"U:user filesbwalkerocrTesting.txt");
Bitmap image = new Bitmap(@"u:user filesbwalker2849257.tif");
tessnet2.Tesseract ocr = new tessnet2.Tesseract();
// If digit only
ocr.SetVariable("tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,$-/#&=()"':?");
// To use correct tessdata
ocr.Init(@"C:UsersbwalkerDocumentsVisual Studio 2010ProjectstessnetWinFormstessnetWinFormsbinRelease", "eng", false); 
List<tessnet2.Word> result = ocr.DoOCR(image, System.Drawing.Rectangle.Empty);
string Results = "";
foreach (tessnet2.Word word in result)
{
    Results += word.Confidence + ", " + word.Text + ", " +word.Top+", "+word.Bottom+", "+word.Left+", "+word.Right+"n";
}
using (StreamWriter writer = new StreamWriter(@"U:user filesbwalkerocrTesting2.txt", true))
{
    writer.WriteLine(Results);//+", "+word.Top+", "+word.Bottom+", "+word.Left+", "+word.Right);
    writer.Close();
}
MessageBox.Show("Completed");

Puedes usar el hocr “configfile” con tesseract así:

tesseract syllabus-page1.jpg syllabus-page1 hocr

Esto generará un documento principalmente HTML5 con elementos como:

<div class="ocr_page" id='page_1' title="image "syllabus-page1.jpg"; bbox 0 0 2531 3272; ppageno 0">
  <div class="ocr_carea" id="block_1_4" title="bbox 265 1183 2147 1778">
    <p class="ocr_par" dir="ltr" id="par_1_8" title="bbox 274 1305 655 1342">
      <span class="ocr_line" id="line_1_14" title="bbox 274 1305 655 1342; baseline -0.005 0; x_size 46.378059; x_descenders 10.378059; x_ascenders 12">
        <span class="ocrx_word" id="word_1_78" title="bbox 274 1307 386 1342; x_wconf 90" lang="eng" dir="ltr">needs</span>
        <span class="ocrx_word" id="word_1_79" title="bbox 402 1318 459 1342; x_wconf 90" lang="eng" dir="ltr">are</span>
        <span class="ocrx_word" id="word_1_80" title="bbox 474 1305 655 1341; x_wconf 86" lang="eng" dir="ltr">different:</span>
      </span>
    </p>
    ...
  </div>  
  ...
</div>

Si bien estoy bastante seguro de que no es así como se supone que debes usar XML, lo encontré más fácil que profundizar en la API de tesseract.

PD: Me doy cuenta de que varios comentarios y respuestas aluden a esta solución, pero ninguno de ellos muestra realmente cómo usar el hocr opción o describe el resultado que obtienes de eso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *