Commit 78ec197bd8a4a5fed30895fd813eeb0acf6d1d04

Authored by Nei Jobson da Costa Carneiro
2 parents 5583bbf9 95a06cbd

Merge branch 'Atualizacao_pre_1.0.4b' into 'master'

Atualizacao pre 1.0.4b

See merge request !3
Showing 1 changed file with 62 additions and 41 deletions   Show diff stats
1 -# OCR Server 1.0.4 - (c) Agencia Nacional de Telecomunicacoees 1 +# OCR Server 1.0.4b - (c) Agencia Nacional de Telecomunicacoees
2 # 2 #
3 # This script monitors a set of input directories for PDF files 3 # This script monitors a set of input directories for PDF files
4 # once a new file is detected, it is processes through tesseract OCR 4 # once a new file is detected, it is processes through tesseract OCR
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
23 # 1.0.2 Fix bug when counting cores for AMD processors 23 # 1.0.2 Fix bug when counting cores for AMD processors
24 # 1.0.3 Added better image type detection 24 # 1.0.3 Added better image type detection
25 # 1.0.4 Fix: added ubuntu init script 25 # 1.0.4 Fix: added ubuntu init script
  26 +# 1.0.4b Centos 6.9
26 # 27 #
27 # TODO: - Changes get_imgs and OCR processing to enable pages with more than one image -- it 28 # TODO: - Changes get_imgs and OCR processing to enable pages with more than one image -- it
28 # would not work on previous versions that assumed #pages = #imgs. Version 1.1 counts them 29 # would not work on previous versions that assumed #pages = #imgs. Version 1.1 counts them
@@ -38,7 +39,7 @@ @@ -38,7 +39,7 @@
38 # 39 #
39 # 40 #
40 # O servidor OCR depende dos seguintes componentes: 41 # O servidor OCR depende dos seguintes componentes:
41 -# - Perl 5.10.1, com seguintes módulos: 42 +# - Perl 5.10.1, com seguintes módulos:
42 # - File::Find::Rule 43 # - File::Find::Rule
43 # - File::Basename 44 # - File::Basename
44 # - File::Copy 45 # - File::Copy
@@ -49,48 +50,56 @@ @@ -49,48 +50,56 @@
49 # - IPC::Open3 50 # - IPC::Open3
50 # - IO::Select 51 # - IO::Select
51 # - POSIX 52 # - POSIX
52 -# - Tesseract-ocr 3.05, com dicionários inglês e português 53 +# - Tesseract-ocr 3.05, com dicionários inglês e português
53 # - Pdftk 2.02 54 # - Pdftk 2.02
54 # - Poppler-utils 0.42.0 55 # - Poppler-utils 0.42.0
55 # - Cpdf 2.1 56 # - Cpdf 2.1
56 # - ImageMagick 6.7.2-7 57 # - ImageMagick 6.7.2-7
57 # 58 #
58 -# Na ausência deles na distribuição do sistema operacional, o uso de versões antigas desses componentes podem comprometer o correto funcionamento do sistema  
59 -# Dessa forma, pode ser necessário compilar os componentes faltantes, assim como as bibliotecas necessárias para o seu correto funcionamento.  
60 -# Esse arquivo contem informações quanto aos procedimentos para instalar e configurar o sistema pressupondo o pior caso, qual seja, a necessidade de compilação dos componentes. 59 +# Na ausência deles na distribuição do sistema operacional, o uso de versões antigas desses componentes podem comprometer o correto funcionamento do sistema
  60 +# Dessa forma, pode ser necessário compilar os componentes faltantes, assim como as bibliotecas necessárias para o seu correto funcionamento.
  61 +# Esse arquivo contem informações quanto aos procedimentos para instalar e configurar o sistema pressupondo o pior caso, qual seja, a necessidade de compilação dos componentes.
61 # 62 #
62 -## ATENÇÃO: se algum componente abaixo não estiver disponível no repositório padrão para o Linux utilizado, deve-se proceder com a compilação da versão mais recente do componente disponibilizado em outros repositórios para que seja instalado no Linux a ser utilizado. 63 +## ATENÇÃO: se algum componente abaixo não estiver disponível no repositório padrão para o Linux utilizado, deve-se proceder com a compilação da versão mais recente do componente disponibilizado em outros repositórios para que seja instalado no Linux a ser utilizado.
63 # 64 #
64 -# Configure o script, alterando as variáveis no arquivo '/usr/local/bin/ocr': 65 +# Configure o script, alterando as variáveis no arquivo '/usr/local/bin/ocr':
65 # 66 #
66 -# @BASE_DIRS: Lista de diretórios base para a busca de arquivos --> cada diretório base irá ter sua própria instância do script  
67 -# @SUB_DIRS: Subdiretórios de entrada, saída, backup do arquivos originais, temporário e de arquivos com erro  
68 -# $MAX_FILES: Número máximo de arquivos a serem processados simultaneamente por diretório de entrada (default: 2)  
69 -# $MAX_PGS: Número máximo de páginas que podem ser processadas simultanemante por arquivo de entrada (default: no. de CPUs)  
70 -# Essas variáveis controlam o número máximo de instâncias de processos simultâneas = Num. de diretorios X MAX_FILES X MAX_PGS.  
71 -# Recomenda-se que o equipamento tenha em torno de 1,5 GB de RAM para cada core de CPU de forma a evitar swap. Se isso não for possível, pode ser reduzido o número de processos ou arquivos simultâneos.  
72 -# A configuração do servidor pode ser dimensionada com base no tempo desejado para processamento de grandes arquivos (> 100 páginas). Cada página tem sua própria thread de processamento, até o limite de $MAX_PGS, cujo default é o no. de cores de CPU. Em média cada página demora em torno de 18 segundos em uma CPU Xeon E5 4670@2.6GHz. Assim, com 16 CPUs, o desempenho agregado é em torno de 1,2 segundos por página. 67 +# @BASE_DIRS: Lista de diretórios base para a busca de arquivos --> cada diretório base irá ter sua própria instância do script
  68 +# @SUB_DIRS: Subdiretórios de entrada, saída, backup do arquivos originais, temporário e de arquivos com erro
  69 +# $MAX_FILES: Número máximo de arquivos a serem processados simultaneamente por diretório de entrada (default: 2)
  70 +# $MAX_PGS: Número máximo de páginas que podem ser processadas simultanemante por arquivo de entrada (default: no. de CPUs)
  71 +# Essas variáveis controlam o número máximo de instâncias de processos simultâneas = Num. de diretorios X MAX_FILES X MAX_PGS.
  72 +# Recomenda-se que o equipamento tenha em torno de 1,5 GB de RAM para cada core de CPU de forma a evitar swap. Se isso não for possível, pode ser reduzido o número de processos ou arquivos simultâneos.
  73 +# A configuração do servidor pode ser dimensionada com base no tempo desejado para processamento de grandes arquivos (> 100 páginas). Cada página tem sua própria thread de processamento, até o limite de $MAX_PGS, cujo default é o no. de cores de CPU. Em média cada página demora em torno de 18 segundos em uma CPU Xeon E5 4670@2.6GHz. Assim, com 16 CPUs, o desempenho agregado é em torno de 1,2 segundos por página.
73 # 74 #
74 -# Para operação multi instância, basta instalar quantos servidores forem necessários e eles podem ter acesso aos mesmos diretórios de entrada que podem ser compartilhamentos SAMBA/CIFS/Windows ou NFS. 75 +# Para operação multi instância, basta instalar quantos servidores forem necessários e eles podem ter acesso aos mesmos diretórios de entrada que podem ser compartilhamentos SAMBA/CIFS/Windows ou NFS.
75 # 76 #
76 # 77 #
77 -# ----------------------- COMPILAÇÃO dos pré requisitos (obs.: os comandos de devem ser executados como root) 78 +# ----------------------- COMPILAÇÃO dos pré requisitos (obs.: os comandos de devem ser executados como root)
78 # 79 #
79 # 80 #
80 -# Compilando os pré-requisitos: máquina de COMPILAÇÃO APENAS 81 +# Compilando os pré-requisitos: máquina de COMPILAÇÃO APENAS
81 # 82 #
82 -# RedHat 6.7:  
83 -yum -y install autoconf make gcc-java gcc gcc-c++ subversion pkg-config automake libtool yasm cmake git libgcj 83 +# RedHat 6.7 e Centos 6.9:
  84 +yum -y install autoconf make gcc-java gcc gcc-c++ subversion pkg-config automake libtool yasm cmake git libgcj unzip
84 yum -y install libtiff-devel libpng-devel openjpeg-devel libjpeg-turbo-devel giflib-devel libwebp-devel zlib-devel libicu-devel pango-devel cairo-devel fontconfig-devel gettext-devel 85 yum -y install libtiff-devel libpng-devel openjpeg-devel libjpeg-turbo-devel giflib-devel libwebp-devel zlib-devel libicu-devel pango-devel cairo-devel fontconfig-devel gettext-devel
85 cd /tmp 86 cd /tmp
86 wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm 87 wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
87 rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm 88 rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
88 rm -f msttcore-fonts-2.0-3.noarch.rpm 89 rm -f msttcore-fonts-2.0-3.noarch.rpm
89 90
  91 +# Centos 6.9
  92 +# \_ autoconf-archive
  93 +wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/pelliott11:/autoconf-archive/CentOS_CentOS-6/noarch/autoconf-archive-2012.04.07-7.3.noarch.rpm
  94 +rpm -i autoconf-archive-2012.04.07-7.3.noarch.rpm
  95 +rm autoconf-archive-2012.04.07-7.3.noarch.rpm
  96 +# \_ GCC 4.8
  97 +wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
  98 +yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ devtoolset-2-gcj
  99 +
90 # Ubuntu 14.04 Server: 100 # Ubuntu 14.04 Server:
91 apt-get install build-essential cmake libtool yasm pkg-config subversion git libgcj14 101 apt-get install build-essential cmake libtool yasm pkg-config subversion git libgcj14
92 apt-get install libtiff-dev libpng-dev libopenjpeg-dev libjpeg8-dev libjpeg-turbo8-dev libjpeg-dev libgif-dev zlib1g-dev libicu-dev libpango1.0-dev libcairo2-dev libfontconfig1-dev libgettextpo-dev 102 apt-get install libtiff-dev libpng-dev libopenjpeg-dev libjpeg8-dev libjpeg-turbo8-dev libjpeg-dev libgif-dev zlib1g-dev libicu-dev libpango1.0-dev libcairo2-dev libfontconfig1-dev libgettextpo-dev
93 -apt-get install  
94 apt-get install ttf-mscorefonts-installer 103 apt-get install ttf-mscorefonts-installer
95 104
96 # Ambas plataformas: 105 # Ambas plataformas:
@@ -115,50 +124,62 @@ wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-src.zip @@ -115,50 +124,62 @@ wget https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-src.zip
115 unzip pdftk-2.02-src.zip 124 unzip pdftk-2.02-src.zip
116 rm -f pdftk-2.02-src.zip 125 rm -f pdftk-2.02-src.zip
117 126
118 -# Tesseract, versão 3.05-dev ou superior 127 +# pdftk, versão 2.02 ou superior
  128 +cd pdftk-2.02-dist/pdftk && make -f Makefile.Redhat all install && cd ../..
  129 +
  130 +# Centos 6.9
  131 +# \_ Cria um novo shell usando o GCC 4.8 por default
  132 +scl enable devtoolset-2 bash
  133 +
  134 +# Tesseract, versão 3.05-dev ou superior
119 # Bibliotecas para o Tesseract: Leptonica e Libav 135 # Bibliotecas para o Tesseract: Leptonica e Libav
120 -cd leptonica && ./autobuild && ./configure && make -j 8 all install && cd .. 136 +cd leptonica && ./autobuild && ./configure && make all install && cd ..
121 137
122 -cd libav && ./configure --enable-sram && make -j8 all install && cd .. 138 +# Para compilação do Tesseract após a compilação do leptonica
  139 +export PKG_CONFIG_PATH=/usr/lib:/usr/local/lib:/usr/local/src/leptonica/
  140 +
  141 +cd libav && ./configure --enable-sram && make all install && cd ..
123 142
124 # Tesseract 143 # Tesseract
125 -cd tesseract && ./autogen.sh && ./configure && make -j 8 all install && cd .. 144 +cd tesseract && ./autogen.sh && ./configure && make all install && cd ..
126 cp -avR tessdata/* /usr/local/share/tessdata/ 145 cp -avR tessdata/* /usr/local/share/tessdata/
127 146
128 -# cpdf, versão 2.1 ou superior 147 +# cpdf, versão 2.1 ou superior
129 cd ocaml && ./configure && make world.opt && make install && cd .. 148 cd ocaml && ./configure && make world.opt && make install && cd ..
130 mkdir -p /usr/local/man/man5 149 mkdir -p /usr/local/man/man5
  150 +# lib-findlib -- pode dar erro na instalação de páginas de man... é seguro ignorar, ou basta criar os diretórios faltantes e tentar novamente
131 cd lib-findlib && ./configure && make all && make install && cd .. 151 cd lib-findlib && ./configure && make all && make install && cd ..
132 cd camlpdf && sed -i.bak s/\(uint32\)/\(uint32_t\)/g flatestubs.c && make && make install && cd .. 152 cd camlpdf && sed -i.bak s/\(uint32\)/\(uint32_t\)/g flatestubs.c && make && make install && cd ..
133 cd cpdf-source && make all && make install && cp cpdf /usr/local/bin && cd .. 153 cd cpdf-source && make all && make install && cp cpdf /usr/local/bin && cd ..
134 154
135 -# pdftk, versão 2.02 ou superior  
136 -cd pdftk-2.02-dist/pdftk && make -f Makefile.Redhat all install && cd ../.. 155 +# poppler-utils, versão 0.42.0 ou superior
  156 +cd poppler && ./autogen.sh && ./configure && make all install && cd ..
137 157
138 -# poppler-utils, versão 0.42.0 ou superior  
139 -cd poppler && ./autogen.sh && LIBOPENJPEG_LIBS=-l/usr/local/lib/libopenjp2.so LIBOPENJPEG_CFLAGS=-I/usr/local/include ./configure --enable-libopenjpeg=openjpeg2 && make all install && cd .. 158 +# Centos 6.9
  159 +# \_ Termina o shell usando o GCC 4.8 por default
  160 +exit
140 161
141 -# ----------------------- INSTALAÇÃO (obs.: os comandos de devem ser executados como root) 162 +# ----------------------- INSTALAÇÃO (obs.: os comandos de devem ser executados como root)
142 163
143 -## Comandos adicionais para configuração do módulo: 164 +## Comandos adicionais para configuração do módulo:
144 165
145 -# Criação do usuário 166 +# Criação do usuário
146 adduser ocr 167 adduser ocr
147 168
148 -# Copie os arquivos ocr ocr-* para os diretórios corretos, conforme o sistema operacional 169 +# Copie os arquivos ocr ocr-* para os diretórios corretos, conforme o sistema operacional
149 cp ./usr/local/bin/ocr /usr/local/bin 170 cp ./usr/local/bin/ocr /usr/local/bin
150 -cp ./usr/local/etc/init.d/ocr-redhat /etc/init.d/ocr (OU)  
151 -cp ./usr/local/etc/init.d/ocr-ubuntu /etc/init.d/ocr  
152 171
153 -# Auto start (RedHat 6.7) 172 +# Auto start (RedHat 6.7 e CentOs 6.9)
  173 +cp ./usr/local/etc/init.d/ocr-redhat /etc/init.d/ocr
154 mv /etc 174 mv /etc
155 chkconfig --add ocr 175 chkconfig --add ocr
156 chkconfig --level 2345 ocr on 176 chkconfig --level 2345 ocr on
157 177
158 # Auto start (Ubuntu 14.04) 178 # Auto start (Ubuntu 14.04)
  179 +cp ./usr/local/etc/init.d/ocr-ubuntu /etc/init.d/ocr
159 update-rd.d ocr defaults 180 update-rd.d ocr defaults
160 181
161 -# Create pkg 182 +# Create pkg -- para instalação em outras máquinas sem a necessidade de novas compilações
162 cd /home/ocr 183 cd /home/ocr
163 tar cvozf pkg-ocr.tgz /usr/local/bin /usr/local/lib* /usr/local/man/ /usr/local/sbin/ /usr/local/share/ /usr/local/etc /usr/local/include/ /home/ocr/ocr* /etc/init.d/ocr /etc/rc*.d/*ocr 184 tar cvozf pkg-ocr.tgz /usr/local/bin /usr/local/lib* /usr/local/man/ /usr/local/sbin/ /usr/local/share/ /usr/local/etc /usr/local/include/ /home/ocr/ocr* /etc/init.d/ocr /etc/rc*.d/*ocr
164 su 185 su
@@ -167,9 +188,9 @@ su @@ -167,9 +188,9 @@ su
167 cd / 188 cd /
168 tar xovzf pkg-ocr.tgz 189 tar xovzf pkg-ocr.tgz
169 190
170 -# Instalando pré-requisitos RUNTIME em servidores adicionais 191 +# Instalando pré-requisitos RUNTIME em servidores adicionais
171 192
172 -# Redhat 6.7 193 +# Redhat 6.7 e CentOS 6.9
173 yum -y install perl-File-Find-Rule-Perl perl-File-Touch libtiff libpng openjpeg-libs libjpeg-turbo giflib zlib libicu pango cairo fontconfig ImageMagick gettext libwebp 194 yum -y install perl-File-Find-Rule-Perl perl-File-Touch libtiff libpng openjpeg-libs libjpeg-turbo giflib zlib libicu pango cairo fontconfig ImageMagick gettext libwebp
174 yum -y install libtiff libpng openjpeg libjpeg-turbo giflib libwebp zlib libicu pango cairo fontconfig gettext 195 yum -y install libtiff libpng openjpeg libjpeg-turbo giflib libwebp zlib libicu pango cairo fontconfig gettext
175 196
@@ -177,5 +198,5 @@ yum -y install libtiff libpng openjpeg libjpeg-turbo giflib libwebp zlib libicu @@ -177,5 +198,5 @@ yum -y install libtiff libpng openjpeg libjpeg-turbo giflib libwebp zlib libicu
177 apt-get install libfile-find-rule-perl libfile-find-rule-perl-perl libtiff5 libpng12-0 libopenjpeg2 libjpeg-turbo8 libgif4 zlib1g libicu52 libpango1.0-0 libcairo2 fontconfig imagemagick gettext libwebp5 # libgcj14 198 apt-get install libfile-find-rule-perl libfile-find-rule-perl-perl libtiff5 libpng12-0 libopenjpeg2 libjpeg-turbo8 libgif4 zlib1g libicu52 libpango1.0-0 libcairo2 fontconfig imagemagick gettext libwebp5 # libgcj14
178 apt-get install libtiff5 libpng12-0 libopenjpeg2 libjpeg8 libjpeg-turbo8 libjpeg8 zlib1g libpango1.0-0 libcairo2 libfontconfig1 libgettextpo0 199 apt-get install libtiff5 libpng12-0 libopenjpeg2 libjpeg8 libjpeg-turbo8 libjpeg8 zlib1g libpango1.0-0 libcairo2 libfontconfig1 libgettextpo0
179 200
180 -# Inicie o serviço com 201 +# Inicie o serviço com
181 service ocr start 202 service ocr start