2019-06-12 15:23:30 +00:00
use super ::* ;
use lazy_static ::lazy_static ;
use spawning ::SpawningFileAdapter ;
use std ::process ::Command ;
static EXTENSIONS : & [ & str ] = & [ " jpg " , " png " ] ;
lazy_static! {
static ref METADATA : AdapterMeta = AdapterMeta {
name : " tesseract " . to_owned ( ) ,
version : 1 ,
description : " Uses tesseract to run OCR on images to make them searchable. May need -j1 to prevent overloading the system. Make sure you have tesseract installed. " . to_owned ( ) ,
fast_matchers : EXTENSIONS
. iter ( )
. map ( | s | FastMatcher ::FileExtension ( s . to_string ( ) ) )
. collect ( ) ,
slow_matchers : None
} ;
}
#[ derive(Default) ]
pub struct TesseractAdapter { }
impl TesseractAdapter {
pub fn new ( ) -> TesseractAdapter {
TesseractAdapter { }
}
}
impl GetMetadata for TesseractAdapter {
fn metadata ( & self ) -> & AdapterMeta {
& METADATA
}
}
impl SpawningFileAdapter for TesseractAdapter {
fn get_exe ( & self ) -> & str {
" tesseract "
}
fn command ( & self , _filepath_hint : & Path , mut cmd : Command ) -> Command {
2019-06-12 15:44:47 +00:00
// rg already does threading
cmd . env ( " OMP_THREAD_LIMIT " , " 1 " ) . arg ( " - " ) . arg ( " - " ) ;
2019-06-12 15:23:30 +00:00
cmd
}
}