Tesseract-OCR для пакетных файлов во всех подпапках, Windows cmd? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь использовать Tesseract-OCR для чтения и OCR всех файлов .png, не только в текущей папке (как есть ответ на этот вопрос), но также во всех подпапках .Это работает для папки:

for %%A in ("C:\Users\x\AppData\Local\Tesseract-OCR\temp\*.png") do C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "%%~fA" "%%~dpnxA"

Я попытался с помощью этого просмотреть все подпапки, которые у меня есть в папке «temp»:

(for /r %%a in (*.png) do C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "%%~nxa" "%%~dpnxA")

, но я получил эти ошибки для каждого файла:

C:\Users\x\AppData\Local\Tesseract-OCR\temp>C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "01.png" "%~dpnxA"
Tesseract Open Source OCR Engine v4.1.0-elag2019 with Leptonica
Error, cannot read input file 01.png: No such file or directory
Error during processing.

Очевидно, что скрипт находит все файлы во всех подпапках, но затем по какой-то причине не может прочитать?

Кроме того, этот скрипт работает для одной папки, нокогда я пытаюсь использовать с / r, он не проходит через все подпапки:

:Start
   @Echo off
   Set _SourcePath=C:\Users\x\AppData\Local\Tesseract-OCR\temp\*.png
   Set _OutputPath=C:\Users\x\AppData\Local\Tesseract-OCR\temp\
   Set _Tesseract="C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe"
:Convert
   For %%A in (%_SourcePath%) Do Echo Converting %%A...&%_Tesseract% %%A %_OutputPath%%%~nA 
:End   
   Set "_SourcePath="
   Set "_OutputPath="
   Set "_Tesseract="

Есть идеи?

1 Ответ

1 голос
/ 05 июня 2019

Возможно, это то, что вы ищете:

@Echo Off
SetLocal DisableDelayedExpansion

Set "_SourcePath=%LocalAppData%\Tesseract-OCR\temp"
Set "_SourceMask=*.png"
Set "_OutputPath=%LocalAppData%\Tesseract-OCR\temp"
Set "_TesserFile=%LocalAppData%\Tesseract-OCR\tesseract.exe"

For /F "Delims=" %%A In (
    '""%__AppDir__%where.exe" /R "%_SourcePath%" "%_SourceMask%" 2>Nul"'
) Do Echo Converting %%A...& "%_TesserFile%" "%%A" "%_OutputPath%\%%~nA"

Обратите внимание, это предполагает, что позволяет указывать выходной каталог и принимает строки в двойных кавычках и т. Д. Также предполагается, что вы намерены поместить все выходные файлы в %_OutputPath%.

Если вы хотите, чтобы они располагались вдоль их соответствующих .png, то, возможно, это сделает это:

@Echo Off
SetLocal DisableDelayedExpansion

Set "_SourcePath=%LocalAppData%\Tesseract-OCR\temp"
Set "_SourceMask=*.png"
Set "_TesserFile=%LocalAppData%\Tesseract-OCR\tesseract.exe"

For /F "Delims=" %%A In (
    '""%__AppDir__%where.exe" /R "%_SourcePath%" "%_SourceMask%" 2>Nul"'
) Do Echo Converting %%A...& "%_TesserFile%" "%%A" "%%~nA"
...