source - tesseract ocr setup 3.05 02
Error de ejecuciĆ³n de Tesseract (7)
Tengo un problema con la ejecución del motor tesseract-ocr en linux. He descargado datos de idioma RUS y los he puesto en el directorio tessdata (/ usr / local / share / tessdata). Cuando intento ejecutar tesseract con el comando tesseract blob.jpg out -l rus
, aparece un error:
Error opening data file /usr/local/share/tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language eng
Tesseract couldn''t load any languages!
Could not initialize tesseract.
De acuerdo con la guía de compilación , usé export TESSDATA_PREFIX=''/usr/local/share/''
para señalar mi directorio tessdata. Tal vez debería editar cualquier archivo de configuración? Tesseract intenta cargar archivos de datos ''eng'' en lugar de ''rus''.
Captura de pantalla: http://i.stack.imgur.com/I0Guc.png
Estoy usando Visual Studio 2017 Community Edition.
Resolví este problema haciendo un directorio llamado tessdata en el directorio de depuración de mi proyecto. Luego puse el archivo eng.traineddata en dicho directorio.
La forma más sencilla es instalar el paquete necesario:
sudo apt-get install tesseract-ocr-eng #for english
sudo apt-get install tesseract-ocr-tam #for tamil
sudo apt-get install tesseract-ocr-deu #for deutsch (German)
Como puede observar, abre el camino a otros idiomas (es decir, tesseract-ocr-fra).
Ninguna solución previa funcionó para mí.
He instalado tanto apt-get
como descargando manualmente los tessdata, moviéndome alrededor de /usr
y así sucesivamente, y nadie trabajó, incluso si exporté la variable mil veces.
Finalmente, en un último intento antes de comenzar a llorar, he intentado pasar la ruta directamente a la instancia de Tesseract ().
En Python: tr = Tesseract("/usr/local/share/tesseract-ocr/")
y ahora funciona. Para aclarar, estoy usando el módulo tesserwrap
.
Puede llamar a la función API de tesseract desde el código C:
#include <tesseract/baseapi.h>
#include <tesseract/ocrclass.h>; // ETEXT_DESC
using namespace tesseract;
class TessAPI : public TessBaseAPI {
public:
void PrintRects(int len);
};
...
TessAPI *api = new TessAPI();
int res = api->Init(NULL, "rus");
api->SetAccuracyVSpeed(AVS_MOST_ACCURATE);
api->SetImage(data, w0, h0, bpp, stride);
api->SetRectangle(x0,y0,w0,h0);
char *text;
ETEXT_DESC monitor;
api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s/n", text);
printf("m.count: %s/n", monitor.count);
printf("m.progress: %s/n", monitor.progress);
api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s/n", text);
...
api->End();
Y construye este código:
g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus
(Necesito FreeImage para cargar imágenes)
Puedes tomar eng.traineddata
de Google (comprimido):
wget https://tesseract-ocr.googlecode.com/files/eng.traineddata.gz
o Github (crudo):
wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
Consulte https://github.com/tesseract-ocr/tessdata para obtener una lista completa de datos de idiomas capacitados.
Cuando tome los archivos, /usr/local/share/tessdata
carpeta /usr/local/share/tessdata
. Advertencia: algunas distribuciones de Linux (como openSUSE y Ubuntu) pueden estar esperando en /usr/share/tessdata
en /usr/share/tessdata
lugar.
# If you got the data from Google, unzip it first!
gunzip eng.traineddata.gz
# Move the data
sudo mv -v eng.traineddata /usr/local/share/tessdata/
Tuve este error también en la máquina de Windows.
Mi solución.
1) Descargue sus archivos de idioma desde https://github.com/tesseract-ocr/tessdata/tree/3.04.00
Por ejemplo, para eng, descargué todos los archivos con el prefijo eng.
2) Póngalos en el directorio tessdata dentro de alguna carpeta. Agregue esta carpeta a las variables de la ruta del sistema como TESSDATA_PREFIX .
El resultado será System env var: TESSDATA_PREFIX = D: / Java / OCR Y la carpeta OCR tiene tessdata con archivos de idiomas.
Esta es una captura de pantalla del directorio:
tesseract --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>
En mi caso, los errores que he cometido o intentos que no tuvieron éxito.
- Cloné el repositorio de github y copié los archivos de allí para
- / usr / local / share / tessdata /
- / usr / share / tesseract-ocr / tessdata /
- / usr / share / tessdata /
- Usé
TESSDATA_PREFIX
con las rutas anteriores - sudo apt-get install tesseract-ocr-eng
Los primeros 2 intentos no funcionaron porque los archivos de git clone
no funcionaron por las razones que no conozco. No estoy seguro de por qué el intento # 3 funcionó para mí.
Finalmente,
- Descargué el archivo eng.traindata usando
wget
- Lo copié en alguna carpeta.
- Usado
--tessdata-dir
con nombre de carpeta
Para mí, lo mejor es aprender bien la herramienta y hacer uso de ella , en lugar de confiar en la instalación y las carpetas del administrador de paquetes.