Como atualizo esta busca recursiva de arquivos de diretórios para entradas e saídas de nomes para lidar com o caso abaixo

1

Estou atualizando um script que recursivamente passa por um diretório e ocorre no pdf e atualiza o pdf.

Na sua versão simples, funciona.

ocrmypdf -l vie --deskew --clean --force-ocr --sidecar vietnamese_website.txt Vietnamese\ Website.jpg Vietnamese\ Website.pdf --verbose 1

Eu gostaria de fazê-lo recursivamente passar por uma pasta e consumir todos os tipos de arquivos, então estou expandindo para:

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \)

O exemplo de lote e processamento paralelo está abaixo:

find .  -name '*.pdf' | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --verbose 1 '{}' '{}'

Minha pergunta é em duas partes:

'Idiomas' é um alias para a lista completa de dados de treinamento suportados pelo tesseract. Basta digitar no shell em macosx expande-se: alias linguagens = 'eng + rus + vie + uhr + fra + spa + afr + amh + ara + asm + aze + aze_cyrl + bel + ben + bod + bos + bre + bul + gato + ceb + ces + chi_sim + chi_sim_vert + chi_tra + chi_tra_vert + chr + cos + cym + dan + dan_frak + deu + deu_frak + div + dzo + ell + eng + enm + epo + equ + est + eus + fao + fas + fil + fin + fra + frk + frm + fry + gla + gle + glg + grc + guj + hat + heb + hin + hrv + hun + hye + ik ... e assim por diante - o ocrmypdf pensa suas linguagens de modo que isn ' t trabalhando. E eu gostaria de --sidecar um arquivo de texto e '{} .txt' reclama que não existe tal arquivo. Aqui é onde eu estou.

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --sidecar '{}.txt' '{}' '{}' --verbose 1

Onde encontrar fica o que eu preciso, mas - o sidecar é infeliz. Então, como lidar com o alias e '$ 1.txt'?

    
por markephillips 26.09.2018 / 04:45

2 respostas

1

Acho que há dois pontos.

  • A expansão de alias funciona apenas na primeira palavra, não em uma opção.
  • Você precisa de algumas modificações nos nomes fornecidos por find .

Embora seja possível fazer tudo na linha de comando find , acho mais fácil criar um script para esse propósito, vamos chamá-lo de ocrmypdf.sh :

#!/bin/bash

languages='eng+rus+vie+...'
base="${1%.*}
ocrmypdf -l "$languages" --deskew --clean --force-ocr --sidecar "$base.txt" "$1" "$base.pdf --verbose 1

Então você pode executá-lo com

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf.sh '{}'
    
por 26.09.2018 / 07:41
0

Portanto, com a direção do user-ralfiedl, o seguinte funciona com o Tessearct 4.0 baseado em LSTM mais recente no MacOSX.

Atualizado: consegui descobrir como inserir tudo isso no .profile ou. bashrc que é onde eu queria, em primeiro lugar ... o seguinte não precisa de variáveis para o arquivo txt.

function do_ocr () {
    #find . -name '*.pdf' -o -name '*.jpg' -o -name '*.tif' -o -name '*.png' -o -name '*.jpeg' -o -name '*.tiff'
    find_all_formats | parallel --tag -j 2 \
    ocrmypdf -l ori+por+srp+hin+chi_sim+spa+uzb_cyrl+mar+swa+ces+urd+nep+cat+mya+lit+dan+mlt+enm+bod+tir+tgl+tha+fas+hrv+ukr+lao+ben+eus+eng+dzo+nld+vie+ita+kir+pus+msa+heb+slv+kaz+rus+eng+vie+ukr+spa \
    --clean --deskew --rotate-pages --image-dpi 300 --jpeg-quality 75 --png-quality 75 \
    -i -f -O 2 --sidecar - --force-ocr '{}' '{}' --verbose 1

}

Nota: Você tem que recompilar cada um dos conjuntos de treinamento para 4.0 que, como o brew, instala o Tessearact 4.0 - Github Link para instruções para instalar dados treinados 4.0

Atualização: há um arquivo docker do Tesseract 4.0 que você precisa adicionar os dados do idioma e as instruções passo a passo do MacOSX para a instalação - certifique-se de ter o Java 8 co-instalado e em seu ambiente para o ScrollViewer.jar. Se você conseguir isso, então a função acima permite que você use todos os idiomas "detectar automaticamente" e, em seguida, ocr imagens, se possível, converter para PDF e produzir um arquivo txt sidecar do conteúdo (no idioma original).

Meu próximo esforço será criar algo que leve documentos do Office em linguagem e os traduza e use Aprendizado de Máquina, adicionando mais dados aos arquivos de texto que OCRing as imagens.

    
por 26.09.2018 / 23:24

Tags