77 lines
1.5 KiB
C
Raw Normal View History

2018-01-25 12:22:42 -08:00
#include <libretro.h>
#include "../ocr_driver.h"
2018-01-25 12:22:42 -08:00
#include "tesseract/wrapper/tess_get_text.h"
2018-01-25 12:22:42 -08:00
static void* ocr_tesseract_init(int game_character_set)
{
2018-01-26 04:35:47 +01:00
bool pass = false;
char* lang_data_dir = NULL;
const char* tess_char_set = NULL;
switch (game_character_set)
{
case RETRO_LANGUAGE_JAPANESE:
tess_char_set = "jpn";
break;
case RETRO_LANGUAGE_ENGLISH:
tess_char_set = "eng";
break;
case RETRO_LANGUAGE_SPANISH:
tess_char_set = "spa";
break;
}
if (!tess_char_set)
return NULL;
/* TODO: get lang data from system dir */
pass = tess_init(lang_data_dir, tess_char_set);
/* data is unused by tesseract */
if (pass)
return (void*)32;
return NULL;
}
2019-02-03 15:49:35 -08:00
static void ocr_tesseract_free(void* data)
{
}
2018-01-25 12:22:42 -08:00
char* ocr_tesseract_get_text(void* data, struct ocr_image_info image)
{
2018-01-25 12:22:42 -08:00
tess_image temp_image;
2019-02-03 15:49:35 -08:00
2018-01-25 12:22:42 -08:00
temp_image.width = image.width;
temp_image.height = image.height;
temp_image.data = image.data;
2019-02-03 15:49:35 -08:00
2018-01-25 12:22:42 -08:00
switch (image.pixel_format)
{
case RETRO_PIXEL_FORMAT_0RGB1555:
case RETRO_PIXEL_FORMAT_RGB565:
temp_image.bytes_per_pixel = 2;
break
2019-02-03 15:49:35 -08:00
2018-01-25 12:22:42 -08:00
case RETRO_PIXEL_FORMAT_XRGB8888:
temp_image.bytes_per_pixel = 4;
break;
2019-02-03 15:49:35 -08:00
2018-01-25 12:22:42 -08:00
default:
/* unsupported format */
return "";
}
2019-02-03 15:49:35 -08:00
2018-01-25 12:22:42 -08:00
return tess_get_text(temp_image);
}
2019-02-03 15:49:35 -08:00
const ocr_driver_t ocr_tesseract = {
ocr_tesseract_init,
ocr_tesseract_free,
ocr_tesseract_get_text,
"tesseract"
2018-01-26 04:35:47 +01:00
};