From 1f6e793a7fbee6d465c14c1601a5c0d029b22291 Mon Sep 17 00:00:00 2001 From: phiresky Date: Wed, 12 Jun 2019 17:44:47 +0200 Subject: [PATCH] tesseract single threaded --- exampledir/screenshot.png | Bin 0 -> 53356 bytes src/adapters/pdfpages.rs | 134 ++++++++++++++++++-------------------- src/adapters/tesseract.rs | 3 +- 3 files changed, 67 insertions(+), 70 deletions(-) create mode 100644 exampledir/screenshot.png diff --git a/exampledir/screenshot.png b/exampledir/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4d683e520f06113ea4040d34c09aedf18b596ca6 GIT binary patch literal 53356 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 SkNpOq*$kepelF{r5}E*&a(*fR literal 0 HcmV?d00001 diff --git a/src/adapters/pdfpages.rs b/src/adapters/pdfpages.rs index 7931317..0705935 100644 --- a/src/adapters/pdfpages.rs +++ b/src/adapters/pdfpages.rs @@ -41,6 +41,71 @@ impl GetMetadata for PdfPagesAdapter { } } +impl FileAdapter for PdfPagesAdapter { + fn adapt(&self, ai: AdaptInfo) -> Fallible<()> { + let AdaptInfo { + filepath_hint, + is_real_file, + mut inp, + oup, + line_prefix, + archive_recursion_depth, + config, + .. + } = ai; + if !is_real_file { + // todo: read to memory and then use that blob if size < max + writeln!(oup, "{}[rga: skipping pdfpages in archive]", line_prefix,)?; + return Ok(()); + } + let inp_fname = filepath_hint; + let exe_name = "gm"; + let out_dir = tempfile::Builder::new().prefix("pdfpages-").tempdir()?; + let out_fname = out_dir.path().join("out%04d.png"); + eprintln!("writing to temp dir: {}", out_fname.display()); + let mut cmd = Command::new(exe_name); + cmd.arg("convert") + .arg("-density") + .arg("200") + .arg(inp_fname) + .arg("+adjoin") + .arg(out_fname); + + let mut cmd = cmd.spawn().map_err(|e| { + map_exe_error(e, exe_name, "Make sure you have graphicsmagick installed.") + })?; + let args = config.args; + // TODO: how to handle this copying better? + + let status = cmd.wait()?; + if status.success() { + } else { + return Err(format_err!("subprocess failed: {:?}", status)); + } + for (i, filename) in glob::glob( + out_dir + .path() + .join("out*.png") + .to_str() + .expect("temp path has invalid encoding"), + )? + .enumerate() + { + let mut ele = BufReader::new(File::open(filename?)?); + rga_preproc(AdaptInfo { + filepath_hint: &PathBuf::from(format!("Page {}.png", i + 1)), + is_real_file: false, + inp: &mut ele, + oup, + line_prefix: &format!("{}Page {}:", line_prefix, i + 1), + archive_recursion_depth: archive_recursion_depth + 1, + config: PreprocConfig { cache: None, args }, + })?; + } + Ok(()) + } +} + /*// todo: do this in an actually streaming fashion and less slow // IEND chunk + PDF magic // 4945 4e44 ae42 6082 8950 4e47 0d0a 1a0a @@ -72,72 +137,3 @@ fn split_by_seq<'a>( out.push(Cursor::new(Vec::from(&all[last..]))); Ok(out) }*/ - -impl FileAdapter for PdfPagesAdapter { - fn adapt(&self, ai: AdaptInfo) -> Fallible<()> { - let AdaptInfo { - filepath_hint, - is_real_file, - mut inp, - oup, - line_prefix, - archive_recursion_depth, - config, - .. - } = ai; - if !is_real_file { - // todo: read to memory and then use that blob if size < max - writeln!(oup, "{}[rga: skipping pdfpages in archive]", line_prefix,)?; - return Ok(()); - } - let inp_fname = filepath_hint; - let exe_name = "gm"; - let out_dir = tempfile::Builder::new().prefix("pdfpages-").tempdir()?; - let out_fname = out_dir.path().join("out%04d.png"); - eprintln!("writing to temp dir: {}", out_fname.display()); - let mut cmd = Command::new(exe_name); - cmd.arg("convert") - .arg("-density") - .arg("300") - .arg(inp_fname) - .arg("+adjoin") - .arg(out_fname); - - let mut cmd = cmd.spawn().map_err(|e| { - map_exe_error( - e, - exe_name, - "Could not find gm. Make sure you have graphicsmagick installed.", - ) - })?; - let args = config.args; - // TODO: how to handle this copying better? - - let status = cmd.wait()?; - if status.success() { - } else { - return Err(format_err!("subprocess failed: {:?}", status)); - } - for (i, filename) in glob::glob( - out_dir - .path() - .join("out*.png") - .to_str() - .expect("temp path has invalid encoding"), - )? - .enumerate() - { - let mut ele = BufReader::new(File::open(filename?)?); - rga_preproc(AdaptInfo { - filepath_hint: &PathBuf::from(format!("Page {}.png", i + 1)), - is_real_file: false, - inp: &mut ele, - oup, - line_prefix, - archive_recursion_depth: archive_recursion_depth + 1, - config: PreprocConfig { cache: None, args }, - })?; - } - Ok(()) - } -} diff --git a/src/adapters/tesseract.rs b/src/adapters/tesseract.rs index fc7bea9..42ebe10 100644 --- a/src/adapters/tesseract.rs +++ b/src/adapters/tesseract.rs @@ -36,7 +36,8 @@ impl SpawningFileAdapter for TesseractAdapter { "tesseract" } fn command(&self, _filepath_hint: &Path, mut cmd: Command) -> Command { - cmd.arg("-").arg("-"); + // rg already does threading + cmd.env("OMP_THREAD_LIMIT", "1").arg("-").arg("-"); cmd } }