Commit 4ff2a149f9f00ed5ad260bad828aa1abcf4ac8e0
Exists in
master
and in
1 other branch
Merge branch 'master' of http://softwarepublico.gov.br/gitlab/anatel/ocr-server
Showing
1 changed file
with
62 additions
and
41 deletions
Show diff stats
INSTALL.txt
| 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 |