0
@echo off
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage %%j
)

if exist *.jpg (
    for %%i in (*.jpg) do (
        mkdir %%~ni
        tesseract %%i %%~ni.txt
        move %%i %%~ni
        move %%~ni.txt %%~ni
    )
)

だから私は基本的に変換するこのコマンドを持っています:

  1. PDFファイルをjpgファイルに変換します。
  2. すべてのJPGファイルについて、対応するフォルダを作成します。
  3. tesseractソフトウェアを使用して画像ファイルをテキストファイルに変換します。
  4. JPGファイルを先ほど作成した対応するフォルダーに移動します(動作します)。
  5. テキストファイルを、作成したばかりの対応するフォルダーに移動します(機能しません)。

画像ファイルの場合と同じように、テキストファイルを対応するフォルダに移動する方法を教えてもらえますか?したがって、最終的に各フォルダには、画像ファイルとテキストファイルの両方が含まれます。ありがとうございました !

4

2 に答える 2

3

そもそもファイルを正しい場所に置くようにtesseractに指示して、ファイルを移動する必要がなくなるようにしましょう:-)

また、名前にスペースが含まれているファイルに遭遇した場合に備えて、ファイル名を引用符で囲む必要があります。

@echo off
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j"
)

if exist *.jpg (
    for %%i in (*.jpg) do (
        mkdir "%%~ni"
        tesseract "%%i" "%%~ni\%%~ni.txt"
        move "%%i" "%%~ni"
    )
)

なんらかの奇妙な理由で、tessereactがファイルを現在のフォルダーに配置することを主張する場合は、現在のフォルダーを変更します。

@echo off
for %%j in (*.pdf) do (
    java -jar pdfbox-app-1.7.1.jar PDFToImage "%%j"
)

if exist *.jpg (
    for %%i in (*.jpg) do (
        mkdir "%%~ni"
        pushd "%%~ni"
        tesseract "..\%%i" "%%~ni.txt"
        popd
        move "%%i" "%%~ni"
    )
)
于 2013-03-08T13:11:16.390 に答える
0

tesseraxtは非常に巧妙であり、実際の変換を別のプロセスとして開始してから終了しているのではないかと強く思います。したがって、バッチで.txtファイルを移動しようとすると、.txtファイルが書き込まれない可能性があります。

個人的には(エアコード)

...
    tesseract %%i %%~ni.txt
    call :transfer %%~ni
...
...
goto :eof
:transfer
setlocal
set count=6
:tloop
if exist %1.txt move %1.jpg %1&move %1.txt %1&goto :eof
set /a count-=1
:: wait 1 second...
if %count% gtr 0 ping -n 2 127.0.0.1 >nul &goto tloop
echo could not find %1.txt after 6 seconds...
goto :eof
于 2013-03-08T05:56:09.287 に答える