Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
644581ed3c | ||
|
|
77f7621bbc | ||
|
|
42713b77d7 | ||
|
|
690f88119d | ||
|
|
78f391536b | ||
|
|
7bdd1828a9 | ||
|
|
a8f513eeeb | ||
|
|
af18bc0684 | ||
|
|
b621df6947 | ||
|
|
313c9e7dc1 | ||
|
|
9d04795f7f | ||
|
|
9a08e71e7f | ||
|
|
790d3022f6 | ||
|
|
ec311af796 | ||
|
|
c725bf79da | ||
|
|
9559f76fae | ||
|
|
45736b7c2b | ||
|
|
5629e960b9 | ||
|
|
79fd8d01a5 | ||
|
|
79fe7a0a85 | ||
|
|
b4b32a35b5 | ||
|
|
4634b3db55 | ||
|
|
f5053158d4 | ||
|
|
dfa4ce1612 | ||
|
|
585595a98e | ||
|
|
f6396fbaac | ||
|
|
3859bae85e | ||
|
|
ee1a7baae7 | ||
|
|
a4da05b66b | ||
|
|
4d67812d51 | ||
|
|
3534742ef9 | ||
|
|
8bfd46c80d | ||
|
|
cc6e9cecc0 | ||
|
|
208657f840 | ||
|
|
f3de980447 | ||
|
|
eb8992e58b | ||
|
|
72ad618ae6 | ||
|
|
f07d0c39bb | ||
|
|
9c5c7d9be0 | ||
|
|
0b19b084e2 | ||
|
|
9b4516af7a | ||
|
|
1eb45de5c9 | ||
|
|
390b9924f5 | ||
|
|
c28858a099 | ||
|
|
f00b3c00cd | ||
|
|
4e4f0bfa1f | ||
|
|
0a31acf888 | ||
|
|
b91096c615 | ||
|
|
95d9e8d91a | ||
|
|
cb6c1939e9 | ||
|
|
3764ee872a | ||
|
|
e402d5cb4b | ||
|
|
53cd04799a | ||
|
|
f2545d4496 | ||
|
|
9b81e76ed4 | ||
|
|
0956fc81aa | ||
|
|
72279e7759 | ||
|
|
6f9b948064 | ||
|
|
4eca0a165b | ||
|
|
067e61e03a | ||
|
|
1b46481f7e | ||
|
|
d8d9c41abb | ||
|
|
a8cad72f72 | ||
|
|
86c04305f4 | ||
|
|
0a110fac55 | ||
|
|
f8970ad862 | ||
|
|
fcfc78b7ee | ||
|
|
8bb244df24 | ||
|
|
8a1cb70479 | ||
|
|
2c579700d6 | ||
|
|
87ff6c8301 | ||
|
|
5915259bee | ||
|
|
969e54f0e3 | ||
|
|
b923612323 | ||
|
|
dc2b161306 | ||
|
|
ae49e3b6db | ||
|
|
0fc5067ab6 | ||
|
|
5eb5b5ba73 | ||
|
|
aa10a70d70 | ||
|
|
f99fd686de | ||
|
|
22dd9314ea | ||
|
|
73b8b88724 | ||
|
|
4863a8e521 | ||
|
|
2366629774 | ||
|
|
814ad36e51 | ||
|
|
1c2adc3d89 | ||
|
|
37923ffe52 | ||
|
|
773e28478c | ||
|
|
e6db071273 | ||
|
|
de74b80335 | ||
|
|
5cba68b93d | ||
|
|
d2d39de92f | ||
|
|
0b834411fe | ||
|
|
c935ba070b | ||
|
|
e30fffa8a4 | ||
|
|
e760be9e19 | ||
|
|
38280e77f8 | ||
|
|
6b9b5cc5d5 | ||
|
|
5f01c5e330 | ||
|
|
5d08303805 | ||
|
|
7965b1f930 | ||
|
|
0a1216bf14 | ||
|
|
f10a0f7707 | ||
|
|
dc11802809 | ||
|
|
4cce0077d0 | ||
|
|
d293e05946 | ||
|
|
4030258bbc | ||
|
|
db388165a9 |
+12
-15
@@ -1,10 +1,19 @@
|
||||
# OCRmyPDF
|
||||
#
|
||||
FROM ubuntu:20.04 as base
|
||||
|
||||
FROM base as builder
|
||||
FROM ubuntu:21.04 as base
|
||||
|
||||
ENV LANG=C.UTF-8
|
||||
ENV TZ=UTC
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python3 \
|
||||
libqpdf-dev \
|
||||
zlib1g \
|
||||
liblept5
|
||||
|
||||
FROM base as builder
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential autoconf automake libtool \
|
||||
@@ -13,7 +22,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python3-dev \
|
||||
python3-distutils \
|
||||
libffi-dev \
|
||||
libqpdf-dev \
|
||||
ca-certificates \
|
||||
curl \
|
||||
git
|
||||
@@ -37,26 +45,15 @@ COPY . /app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN pip3 install --no-cache-dir \
|
||||
-r requirements/main.txt \
|
||||
-r requirements/webservice.txt \
|
||||
-r requirements/test.txt \
|
||||
-r requirements/watcher.txt \
|
||||
.
|
||||
RUN pip3 install --no-cache-dir .[test,webservice,watcher]
|
||||
|
||||
FROM base
|
||||
|
||||
ENV LANG=C.UTF-8
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ghostscript \
|
||||
img2pdf \
|
||||
liblept5 \
|
||||
libsm6 libxext6 libxrender-dev \
|
||||
zlib1g \
|
||||
pngquant \
|
||||
python3 \
|
||||
qpdf \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-chi-sim \
|
||||
tesseract-ocr-deu \
|
||||
|
||||
@@ -14,7 +14,14 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
A clear and concise description of any alternative solutions or features you've considered. Please include the versions of OCRmyPDF and other supporting programs (Tesseract OCR, Ghostscript) - maybe an alternative already exists in a newer version.
|
||||
|
||||
**Example file**
|
||||
If your issue concerns how OCRmyPDF processes certain files, and please provide an example file that helps illustrate how OCRmyPDF's output could be improve.
|
||||
|
||||
Please provide an input file with no personal or confidential information. At your option you may [GPG-encrypt the file](https://github.com/jbarlow83/OCRmyPDF/wiki) for OCRmyPDF's author only.
|
||||
|
||||
Links to files hosted elsewhere are perfectly acceptable. You could also look in ``tests/resources`` and see if any of those files reproduce your issue.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
||||
@@ -6,6 +6,7 @@ on:
|
||||
- master
|
||||
- ci
|
||||
- release/*
|
||||
- feature/*
|
||||
tags:
|
||||
- v*
|
||||
paths-ignore:
|
||||
@@ -18,8 +19,24 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-18.04] #, ubuntu-20.04]
|
||||
python: ["3.6"] #, "3.7", "3.8", "3.9"]
|
||||
include:
|
||||
- os: ubuntu-18.04
|
||||
python: 3.6
|
||||
- os: ubuntu-18.04
|
||||
python: 3.7
|
||||
- os: ubuntu-20.04
|
||||
python: 3.8
|
||||
- os: ubuntu-20.04
|
||||
python: 3.9
|
||||
- os: ubuntu-latest
|
||||
python: 3.9
|
||||
- os: ubuntu-20.04
|
||||
python: "pypy-3.6"
|
||||
- os: ubuntu-latest
|
||||
python: "pypy-3.7"
|
||||
- os: ubuntu-latest
|
||||
python: 3.9
|
||||
tesseract5: true
|
||||
|
||||
env:
|
||||
OS: ${{ matrix.os }}
|
||||
@@ -35,6 +52,11 @@ jobs:
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
|
||||
- name: Install Tesseract 5
|
||||
if: matrix.tesseract5
|
||||
run: |
|
||||
sudo add-apt-repository ppa:alex-p/tesseract-ocr-devel
|
||||
|
||||
- name: Install common packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
@@ -65,9 +87,17 @@ jobs:
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
libexempi8
|
||||
|
||||
- name: Install Ubuntu packages for PyPy
|
||||
if: startsWith(matrix.python, 'pypy')
|
||||
run: |
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
libxml2-dev \
|
||||
libxslt1-dev \
|
||||
pypy3-dev
|
||||
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
python -m pip install -r requirements/main.txt -r requirements/test.txt .
|
||||
python -m pip install .[test]
|
||||
|
||||
- name: Report versions
|
||||
run: |
|
||||
@@ -124,7 +154,7 @@ jobs:
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements/main.txt -r requirements/test.txt .
|
||||
python -m pip install .[test]
|
||||
|
||||
- name: Report versions
|
||||
run: |
|
||||
@@ -174,7 +204,7 @@ jobs:
|
||||
- name: Install Python packages
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements/main.txt -r requirements/test.txt .
|
||||
python -m pip install .[test]
|
||||
|
||||
- name: Test
|
||||
run: |
|
||||
@@ -232,6 +262,7 @@ jobs:
|
||||
name: Build Docker images
|
||||
needs: [wheel_sdist_linux, test_linux, test_macos, test_windows]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name != 'pull_request'
|
||||
steps:
|
||||
- name: Set image tag to release or branch
|
||||
run: echo "DOCKER_IMAGE_TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||
|
||||
+2
-1
@@ -6,8 +6,9 @@
|
||||
!.gitattributes
|
||||
!.gitignore
|
||||
!.pre-commit-config.yaml
|
||||
!.readthedocs.yml
|
||||
!.readthedocs.yaml
|
||||
!.github/
|
||||
!.docker/
|
||||
|
||||
# Dev scratch
|
||||
*.ipynb
|
||||
|
||||
+23
-8
@@ -1,23 +1,38 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v3.4.0
|
||||
rev: v4.0.1
|
||||
hooks:
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: check-toml
|
||||
- id: check-yaml
|
||||
- id: debug-statements
|
||||
- repo: https://github.com/asottile/seed-isort-config
|
||||
rev: v2.2.0
|
||||
hooks:
|
||||
- id: seed-isort-config
|
||||
- repo: https://github.com/pre-commit/mirrors-isort
|
||||
rev: v5.7.0 # pick the isort version you'd like to use from https://github.com/pre-commit/mirrors-isort/releases
|
||||
- repo: https://github.com/pycqa/isort
|
||||
rev: 5.9.3
|
||||
hooks:
|
||||
- id: isort
|
||||
args: ["--profile", "black"]
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 20.8b1
|
||||
rev: 21.9b0
|
||||
hooks:
|
||||
- id: black
|
||||
language_version: python
|
||||
exclude: ^src/ocrmypdf/lib/_leptonica.py
|
||||
- repo: https://github.com/asottile/setup-cfg-fmt
|
||||
rev: v1.17.0
|
||||
hooks:
|
||||
- id: setup-cfg-fmt
|
||||
- repo: https://github.com/asottile/pyupgrade
|
||||
rev: v2.26.0
|
||||
hooks:
|
||||
- id: pyupgrade
|
||||
args: ["--py36-plus"]
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: v0.910
|
||||
hooks:
|
||||
- id: mypy
|
||||
additional_dependencies:
|
||||
- types-toml
|
||||
- types-setuptools
|
||||
- types-requests
|
||||
- types-Pillow
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Build documentation in the docs/ directory with Sphinx
|
||||
sphinx:
|
||||
configuration: docs/conf.py
|
||||
|
||||
# Optionally build your docs in additional formats such as PDF
|
||||
formats:
|
||||
- pdf
|
||||
|
||||
# Optionally set the version of Python and requirements required to build your docs
|
||||
python:
|
||||
version: 3.7
|
||||
install:
|
||||
- method: pip
|
||||
path: .
|
||||
extra_requirements:
|
||||
- docs
|
||||
@@ -1,10 +0,0 @@
|
||||
build:
|
||||
image: latest
|
||||
|
||||
python:
|
||||
version: 3.6
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
|
||||
requirements_file: requirements/main.txt
|
||||
@@ -57,7 +57,7 @@ I searched the web for a free command line tool to OCR PDF files: I found many,
|
||||
|
||||
## Installation
|
||||
|
||||
Linux, Windows, macOS and FreeBSD are supported. Docker images are also available.
|
||||
Linux, Windows, macOS and FreeBSD are supported. Docker images are also available, for both x64 and ARM.
|
||||
|
||||
| Operating system | Install command |
|
||||
| ----------------------------- | ------------------------------|
|
||||
@@ -91,6 +91,11 @@ brew install tesseract-lang
|
||||
|
||||
You can then pass the `-l LANG` argument to OCRmyPDF to give a hint as to what languages it should search for. Multiple languages can be requested.
|
||||
|
||||
OCRmyPDF supports Tesseract 4.0 and the beta versions of Tesseract 5.0. It will
|
||||
automatically use whichever version it finds first on the `PATH` environment
|
||||
variable. On Windows, if `PATH` does not provide a Tesseract binary, we use
|
||||
the highest version number that is installed according to the Windows Registry.
|
||||
|
||||
## Documentation and support
|
||||
|
||||
Once OCRmyPDF is installed, the built-in help which explains the command syntax and options can be accessed via:
|
||||
@@ -115,7 +120,7 @@ In addition to the required Python version (3.6+), OCRmyPDF requires external pr
|
||||
- [heise Open Source, 09/2014: Texterkennung mit OCRmyPDF](https://heise.de/-2356670)
|
||||
- [heise Durchsuchbare PDF-Dokumente mit OCRmyPDF erstellen](https://www.heise.de/ratgeber/Durchsuchbare-PDF-Dokumente-mit-OCRmyPDF-erstellen-4607592.html)
|
||||
- [Excellent Utilities: OCRmyPDF](https://www.linuxlinks.com/excellent-utilities-ocrmypdf-add-ocr-text-layer-scanned-pdfs/)
|
||||
- [LinuxUser Texterkennung mit OCRmyPDF und Scanbd automatisieren](https://www.linux-community.de/ausgaben/linuxuser/2021/06/texterkennung-mit-ocrmypdf-und-scanbd-automatisieren/)
|
||||
- [LinuxUser Texterkennung mit OCRmyPDF und Scanbd automatisieren](https://www.linux-community.de/ausgaben/linuxuser/2021/06/texterkennung-mit-ocrmypdf-und-scanbd-automatisieren/)
|
||||
|
||||
## Business enquiries
|
||||
|
||||
|
||||
+9
-9
@@ -12,7 +12,7 @@ subprocess call anyway, as this provides isolation of its activities.
|
||||
Example
|
||||
=======
|
||||
|
||||
OCRmyPDF one high-level function to run its main engine from an
|
||||
OCRmyPDF provides one high-level function to run its main engine from an
|
||||
application. The parameters are symmetric to the command line arguments
|
||||
and largely have the same functions.
|
||||
|
||||
@@ -23,7 +23,7 @@ and largely have the same functions.
|
||||
if __name__ == '__main__': # To ensure correct behavior on Windows and macOS
|
||||
ocrmypdf.ocr('input.pdf', 'output.pdf', deskew=True)
|
||||
|
||||
With a few exceptions, all of the command line arguments are available
|
||||
With some exceptions, all of the command line arguments are available
|
||||
and may be passed as equivalent keywords.
|
||||
|
||||
A few differences are that ``verbose`` and ``quiet`` are not available.
|
||||
@@ -41,29 +41,29 @@ execution. To do this, it will:
|
||||
- manage the signal flags of its worker processes
|
||||
- execute other subprocesses (forking and executing other programs)
|
||||
|
||||
The Python process that calls ``ocrmypdf.ocr()`` must be sufficiently
|
||||
The Python process that calls :func:`ocrmypdf.ocr()` must be sufficiently
|
||||
privileged to perform these actions.
|
||||
|
||||
There is no currently no option to manage how jobs are scheduled other
|
||||
There currently is no option to manage how jobs are scheduled other
|
||||
than the argument ``jobs=`` which will limit the number of worker
|
||||
processes.
|
||||
|
||||
Creating a child process to call ``ocrmypdf.ocr()`` is suggested. That
|
||||
Creating a child process to call :func:`ocrmypdf.ocr()` is suggested. That
|
||||
way your application will survive and remain interactive even if
|
||||
OCRmyPDF fails for any reason.
|
||||
|
||||
Programs that call ``ocrmypdf.ocr()`` should also install a SIGBUS signal
|
||||
Programs that call :func:`ocrmypdf.ocr()` should also install a SIGBUS signal
|
||||
handler (except on Windows), to raise an exception if access to a memory
|
||||
mapped file fails. OCRmyPDF may use memory mapping.
|
||||
|
||||
``ocrmypdf.ocr()`` will take a threading lock to prevent multiple runs of itself
|
||||
:func:`ocrmypdf.ocr()` will take a threading lock to prevent multiple runs of itself
|
||||
in the same Python interpreter process. This is not thread-safe, because of how
|
||||
OCRmyPDF's plugins and Python's library import system work. If you need to parallelize
|
||||
OCRmyPDF, use processes.
|
||||
|
||||
.. warning::
|
||||
|
||||
On Windows and macOS, the script that calls ``ocrmypdf.ocr()`` must be
|
||||
On Windows and macOS, the script that calls :func:`ocrmypdf.ocr()` must be
|
||||
protected by an "ifmain" guard (``if __name__ == '__main__'``). If you do
|
||||
not take at least one of these steps, process semantics will prevent
|
||||
OCRmyPDF from working correctly.
|
||||
@@ -96,7 +96,7 @@ Exceptions
|
||||
|
||||
OCRmyPDF may throw standard Python exceptions, ``ocrmypdf.exceptions.*``
|
||||
exceptions, some exceptions related to multiprocessing, and
|
||||
``KeyboardInterrupt``. The parent process should provide an exception
|
||||
:exc:`KeyboardInterrupt`. The parent process should provide an exception
|
||||
handler. OCRmyPDF will clean up its temporary files and worker processes
|
||||
automatically when an exception occurs.
|
||||
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@ Users may need to customize the script to meet their requirements.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip3 install -r requirements/watcher.txt
|
||||
pip3 install ocrmypdf[watcher]
|
||||
|
||||
env OCR_INPUT_DIRECTORY=/mnt/input-pdfs \
|
||||
OCR_OUTPUT_DIRECTORY=/mnt/output-pdfs \
|
||||
|
||||
+14
-6
@@ -31,9 +31,18 @@
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = ['sphinx.ext.napoleon']
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.intersphinx',
|
||||
'sphinx.ext.autosummary',
|
||||
'sphinx.ext.napoleon',
|
||||
'sphinx_issues',
|
||||
]
|
||||
|
||||
# Extension settings
|
||||
intersphinx_mapping = {'https://docs.python.org/': None}
|
||||
napoleon_use_rtype = False
|
||||
issues_github_path = "jbarlow83/OCRmyPDF"
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
@@ -54,7 +63,7 @@ master_doc = 'index'
|
||||
# General information about the project.
|
||||
project = 'ocrmypdf'
|
||||
copyright = (
|
||||
'2020, James R. Barlow. Licensed under Creative Commons Attribution-ShareAlike 4.0.'
|
||||
'2021, James R. Barlow. Licensed under Creative Commons Attribution-ShareAlike 4.0.'
|
||||
)
|
||||
author = 'James R. Barlow'
|
||||
|
||||
@@ -86,11 +95,10 @@ if on_rtd:
|
||||
]
|
||||
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
|
||||
|
||||
|
||||
from pkg_resources import get_distribution, DistributionNotFound
|
||||
from importlib_metadata import version as package_version
|
||||
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = get_distribution('ocrmypdf').version
|
||||
release = package_version('ocrmypdf')
|
||||
version = '.'.join(release.split('.')[:2])
|
||||
|
||||
|
||||
@@ -273,7 +281,7 @@ htmlhelp_basename = 'ocrmypdfdoc'
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
latex_elements = { # type: ignore
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,233 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:serif="http://www.serif.com/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="503"
|
||||
height="503"
|
||||
viewBox="0 0 503 503"
|
||||
version="1.1"
|
||||
xml:space="preserve"
|
||||
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"
|
||||
id="svg270"
|
||||
sodipodi:docname="logo-square.svg"
|
||||
inkscape:export-filename="/home/jb/src/ocrmypdf/docs/images/logo-square.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"><metadata
|
||||
id="metadata276"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs274" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="2396"
|
||||
inkscape:window-height="1691"
|
||||
id="namedview272"
|
||||
showgrid="false"
|
||||
lock-margins="false"
|
||||
inkscape:zoom="2.0079523"
|
||||
inkscape:cx="251.5"
|
||||
inkscape:cy="193.18317"
|
||||
inkscape:window-x="26"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg270" />
|
||||
<g
|
||||
id="svg"
|
||||
transform="matrix(0.965977,0,0,0.807602,0,138.43572)">
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="520"
|
||||
height="280"
|
||||
style="fill:#ffffff"
|
||||
id="rect188" />
|
||||
<g
|
||||
transform="matrix(1.03522,0,0,1.23823,-69.7528,-83.422)"
|
||||
id="g267">
|
||||
<g
|
||||
transform="translate(243.977,20.0703)"
|
||||
id="g218">
|
||||
<g
|
||||
id="Page">
|
||||
<g
|
||||
transform="matrix(0.961773,0,0,1.05962,6.19811,-3.01071)"
|
||||
id="g192">
|
||||
<path
|
||||
d="m 328.5,97.682 c 0,-1.217 -0.517,-2.386 -1.444,-3.264 -7.03,-6.66 -37.614,-35.638 -44.828,-42.474 -0.977,-0.925 -2.327,-1.448 -3.738,-1.448 -13.997,0 -90.407,0 -111.151,0 -2.871,0 -5.198,2.113 -5.198,4.718 0,27.837 0,170.351 0,198.186 0,2.605 2.327,4.717 5.197,4.717 24.904,0 131.821,0 156.2,0 2.74,0 4.962,-2.016 4.962,-4.504 0,-24.345 0,-139.717 0,-155.931 z"
|
||||
style="fill:#fdfdfd;stroke:#333333;stroke-width:3.95px"
|
||||
id="path190" />
|
||||
</g>
|
||||
<g
|
||||
id="Dog-ear"
|
||||
serif:id="Dog ear"
|
||||
transform="translate(-4,2)">
|
||||
<path
|
||||
d="m 277.072,48.496 v 45.352 c 0,1.324 0.526,2.593 1.462,3.529 0.936,0.936 2.205,1.462 3.529,1.462 12.485,0 44.078,0 44.078,0"
|
||||
style="fill:#f5f5f5;stroke:#333333;stroke-width:4px"
|
||||
id="path194" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-29.6816,-0.395178)"
|
||||
id="g216">
|
||||
<g
|
||||
transform="matrix(1.00243,0,0,1.11818,-144.72,-8.80181)"
|
||||
id="g200">
|
||||
<path
|
||||
d="m 465.73,119.654 c 0,-2.049 -1.856,-3.713 -4.142,-3.713 H 310.259 c -2.286,0 -4.142,1.664 -4.142,3.713 v 63.454 c 0,2.049 1.856,3.713 4.142,3.713 h 151.329 c 2.286,0 4.142,-1.664 4.142,-3.713 z"
|
||||
style="fill:#f80000;stroke:#ffffff;stroke-width:3.77px"
|
||||
id="path198" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.24571,0,0,1.35864,116.812,84.3924)"
|
||||
id="g214">
|
||||
<g
|
||||
transform="matrix(64,0,0,64,42.1437,77.6203)"
|
||||
id="g204">
|
||||
<path
|
||||
d="m 0.084,0 v -0.68 h 0.213 c 0.074,0 0.137,0.017 0.19,0.05 0.053,0.034 0.079,0.09 0.079,0.168 0,0.077 -0.028,0.134 -0.085,0.17 -0.057,0.037 -0.121,0.055 -0.193,0.055 H 0.213 V 0 Z m 0.209,-0.572 h -0.08 v 0.228 h 0.082 c 0.039,0 0.07,-0.009 0.094,-0.027 0.024,-0.017 0.037,-0.045 0.04,-0.083 0,-0.044 -0.012,-0.075 -0.036,-0.092 -0.024,-0.017 -0.057,-0.026 -0.1,-0.026 z"
|
||||
style="fill:#ffffff;fill-rule:nonzero"
|
||||
id="path202" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(64,0,0,64,79.7117,77.6203)"
|
||||
id="g208">
|
||||
<path
|
||||
d="M 0.332,0 H 0.084 v -0.68 h 0.252 c 0.105,0 0.182,0.032 0.233,0.095 0.051,0.063 0.076,0.144 0.076,0.241 0,0.105 -0.027,0.189 -0.082,0.251 C 0.508,-0.031 0.431,0 0.332,0 Z M 0.337,-0.57 H 0.213 v 0.461 H 0.33 c 0.055,0 0.099,-0.018 0.132,-0.054 C 0.495,-0.199 0.511,-0.259 0.511,-0.344 0.511,-0.415 0.497,-0.47 0.469,-0.51 0.441,-0.55 0.397,-0.57 0.337,-0.57 Z"
|
||||
style="fill:#ffffff;fill-rule:nonzero"
|
||||
id="path206" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(64,0,0,64,123.424,77.6203)"
|
||||
id="g212">
|
||||
<path
|
||||
d="M 0.405,-0.288 H 0.213 V 0 H 0.084 v -0.68 h 0.385 l 0.02,0.102 H 0.213 v 0.189 h 0.173 z"
|
||||
style="fill:#ffffff;fill-rule:nonzero"
|
||||
id="path210" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1,0,0,1.52217,67.3796,10.7507)"
|
||||
id="g222">
|
||||
<rect
|
||||
x="23.500999"
|
||||
y="81.300003"
|
||||
width="162.30499"
|
||||
height="61.77"
|
||||
style="fill:#b4d5ff"
|
||||
id="rect220" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.967536,0,0,0.961535,5.90498,47.9703)"
|
||||
id="g236">
|
||||
<g
|
||||
transform="matrix(90.4804,0,0,90.4804,82.6698,167.705)"
|
||||
id="g226">
|
||||
<path
|
||||
d="m 0.057,-0.337 c 0,-0.105 0.027,-0.19 0.082,-0.257 0.055,-0.066 0.132,-0.1 0.231,-0.102 0.107,0 0.186,0.034 0.237,0.103 0.051,0.069 0.077,0.152 0.077,0.249 0,0.105 -0.027,0.191 -0.082,0.258 -0.055,0.067 -0.133,0.1 -0.232,0.1 C 0.264,0.014 0.185,-0.02 0.134,-0.089 0.083,-0.157 0.057,-0.24 0.057,-0.337 Z m 0.135,-0.001 c 0,0.071 0.014,0.13 0.043,0.175 0.029,0.045 0.073,0.068 0.134,0.068 0.055,0 0.098,-0.02 0.131,-0.061 0.033,-0.041 0.049,-0.103 0.049,-0.188 0,-0.071 -0.014,-0.129 -0.043,-0.174 -0.029,-0.045 -0.073,-0.068 -0.134,-0.068 -0.053,0 -0.097,0.022 -0.13,0.067 -0.033,0.045 -0.05,0.105 -0.05,0.181 z"
|
||||
style="fill:#333333;fill-rule:nonzero"
|
||||
id="path224" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(90.4804,0,0,90.4804,147.906,167.705)"
|
||||
id="g230">
|
||||
<path
|
||||
d="M 0.505,-0.557 C 0.473,-0.567 0.448,-0.574 0.429,-0.579 0.41,-0.583 0.388,-0.585 0.361,-0.585 c -0.054,0 -0.096,0.022 -0.125,0.066 -0.029,0.044 -0.044,0.104 -0.044,0.181 0,0.066 0.012,0.123 0.037,0.171 0.025,0.048 0.066,0.072 0.124,0.072 0.029,0 0.056,-0.003 0.081,-0.009 0.025,-0.006 0.047,-0.013 0.068,-0.022 L 0.551,-0.03 C 0.525,-0.017 0.494,-0.006 0.457,0.002 0.42,0.01 0.388,0.014 0.36,0.014 0.254,0.014 0.177,-0.02 0.129,-0.088 0.081,-0.156 0.057,-0.239 0.057,-0.337 c 0,-0.105 0.027,-0.19 0.08,-0.257 0.053,-0.067 0.129,-0.1 0.228,-0.1 0.02,0 0.048,0.003 0.083,0.01 0.035,0.007 0.068,0.018 0.097,0.034 z"
|
||||
style="fill:#333333;fill-rule:nonzero"
|
||||
id="path228" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(90.4804,0,0,90.4804,199.751,167.705)"
|
||||
id="g234">
|
||||
<path
|
||||
d="m 0.293,-0.572 h -0.08 v 0.208 h 0.082 c 0.039,0 0.071,-0.008 0.096,-0.024 0.025,-0.015 0.038,-0.041 0.038,-0.077 0,-0.038 -0.012,-0.065 -0.036,-0.082 -0.024,-0.017 -0.057,-0.025 -0.1,-0.025 z M 0.479,0 0.335,-0.26 C 0.328,-0.259 0.32,-0.259 0.312,-0.259 0.304,-0.258 0.296,-0.258 0.288,-0.258 H 0.213 V 0 H 0.084 v -0.68 h 0.213 c 0.074,0 0.137,0.017 0.19,0.051 0.053,0.034 0.079,0.087 0.079,0.158 0,0.042 -0.011,0.078 -0.032,0.108 -0.022,0.031 -0.05,0.054 -0.084,0.071 L 0.617,0 Z"
|
||||
style="fill:#333333;fill-rule:nonzero"
|
||||
id="path232" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.916882,0,0,1,121.475,-32.6535)"
|
||||
id="g246">
|
||||
<g
|
||||
transform="matrix(86.953,0,0,86.953,152.996,241.878)"
|
||||
id="g240">
|
||||
<path
|
||||
d="M 0.479,-0.428 C 0.5,-0.451 0.527,-0.47 0.562,-0.484 c 0.034,-0.013 0.065,-0.02 0.092,-0.02 0.066,0 0.113,0.019 0.141,0.058 0.027,0.039 0.041,0.086 0.041,0.142 V 0 H 0.705 v -0.298 c 0,-0.031 -0.007,-0.054 -0.022,-0.071 -0.015,-0.016 -0.036,-0.024 -0.064,-0.024 -0.019,0 -0.038,0.005 -0.059,0.015 -0.021,0.01 -0.039,0.021 -0.056,0.034 0.001,0.007 0.001,0.013 0.002,0.02 0.001,0.007 0.001,0.013 0.001,0.02 V 0 H 0.376 v -0.298 c 0,-0.031 -0.007,-0.054 -0.022,-0.071 -0.015,-0.016 -0.036,-0.024 -0.063,-0.024 -0.017,0 -0.033,0.003 -0.05,0.01 -0.017,0.007 -0.034,0.016 -0.049,0.027 V 0 H 0.062 V -0.485 H 0.13 l 0.032,0.044 c 0.022,-0.02 0.049,-0.035 0.08,-0.047 0.031,-0.011 0.058,-0.016 0.083,-0.016 0.038,0 0.07,0.007 0.095,0.02 0.025,0.014 0.045,0.033 0.059,0.056 z"
|
||||
style="fill:#333333;fill-rule:nonzero"
|
||||
id="path238" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(86.953,0,0,86.953,228.906,241.878)"
|
||||
id="g244">
|
||||
<path
|
||||
d="M 0.156,0.023 0.179,-0.034 0.006,-0.467 0.14,-0.485 0.252,-0.191 0.358,-0.485 H 0.495 L 0.278,0.064 C 0.263,0.103 0.236,0.137 0.197,0.165 0.158,0.193 0.118,0.212 0.075,0.222 L 0.029,0.115 C 0.052,0.105 0.077,0.093 0.104,0.079 0.13,0.064 0.147,0.046 0.156,0.023 Z"
|
||||
style="fill:#333333;fill-rule:nonzero"
|
||||
id="path242" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="Selectors"
|
||||
transform="matrix(0.965977,0,0,0.807602,67.3796,67.3718)">
|
||||
<g
|
||||
id="Right-selector"
|
||||
serif:id="Right selector">
|
||||
<g
|
||||
transform="matrix(1.03522,0,0,1.23823,2.07044,0)"
|
||||
id="g250">
|
||||
<path
|
||||
d="M 185.806,161.156 V 67.132"
|
||||
style="fill:none;stroke:#4c9fff;stroke-width:4px;stroke-linecap:butt"
|
||||
id="path248" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.03522,0,0,1.23823,161.788,169.469)"
|
||||
id="g254">
|
||||
<circle
|
||||
cx="31.523001"
|
||||
cy="34.313999"
|
||||
r="10.021"
|
||||
style="fill:#4c9fff;stroke:#4c9fff;stroke-width:4px;stroke-linecap:butt"
|
||||
id="circle252" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="Left-selector"
|
||||
serif:id="Left selector">
|
||||
<g
|
||||
transform="matrix(1.03522,0,0,1.23823,-170.092,0)"
|
||||
id="g259">
|
||||
<path
|
||||
d="M 185.806,161.156 V 67.132"
|
||||
style="fill:none;stroke:#4c9fff;stroke-width:4px;stroke-linecap:butt"
|
||||
id="path257" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.03522,0,0,1.23823,-10.3742,28.2274)"
|
||||
id="g263">
|
||||
<circle
|
||||
cx="31.523001"
|
||||
cy="34.313999"
|
||||
r="10.021"
|
||||
style="fill:#4c9fff;stroke:#4c9fff;stroke-width:4px;stroke-linecap:butt"
|
||||
id="circle261" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -1,6 +1,8 @@
|
||||
OCRmyPDF documentation
|
||||
======================
|
||||
|
||||
.. figure:: images/logo.svg
|
||||
|
||||
OCRmyPDF adds an optical character recognition (OCR) text layer to scanned PDF
|
||||
files, allowing them to be searched.
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ These platforms have one-liner installs:
|
||||
+-------------------------------+-------------------------------+
|
||||
| LinuxBrew | ``brew install ocrmypdf`` |
|
||||
+-------------------------------+-------------------------------+
|
||||
| FreeBSD | ``pkg install py37-ocrmypdf`` |
|
||||
| FreeBSD | ``pkg install py38-ocrmypdf`` |
|
||||
+-------------------------------+-------------------------------+
|
||||
| Conda (WSL, macOS, Linux) | ``conda install ocrmypdf`` |
|
||||
+-------------------------------+-------------------------------+
|
||||
@@ -635,7 +635,7 @@ versions likely work but have not been tested.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pkg install py37-ocrmypdf
|
||||
pkg install py38-ocrmypdf
|
||||
|
||||
To install a more recent version, you could attempt to first install the system
|
||||
version with ``pkg``, then use ``pip install --user ocrmypdf``.
|
||||
@@ -812,8 +812,7 @@ To install all of the development and test requirements:
|
||||
python3 -m venv
|
||||
source venv/bin/activate
|
||||
cd OCRmyPDF
|
||||
pip install -e .
|
||||
pip install -r requirements/dev.txt -r requirements/test.txt
|
||||
pip install -e .[test]
|
||||
|
||||
To add JBIG2 encoding, see :ref:`jbig2`.
|
||||
|
||||
|
||||
+17
-11
@@ -2,7 +2,12 @@
|
||||
Introduction
|
||||
============
|
||||
|
||||
OCRmyPDF is a Python 3 application and library that adds OCR layers to PDFs.
|
||||
OCRmyPDF is an application and library that adds text "layers" to images
|
||||
in PDFs, making scanned image PDFs searchable. It uses OCR to guess what text
|
||||
is contained in images. It is written in Python. OCRmyPDF supports plugins
|
||||
that allow customization of its processing steps, and is very tolerant of
|
||||
PDFs that contain scanned images and "born digital" content that needs no
|
||||
text recognition.
|
||||
|
||||
About OCR
|
||||
=========
|
||||
@@ -26,7 +31,7 @@ exactly. They contain `vector
|
||||
graphics <http://vector-conversions.com/vectorizing/raster_vs_vector.html>`__
|
||||
that can contain raster objects such as scanned images. Because PDFs can
|
||||
contain multiple pages (unlike many image formats) and can contain fonts
|
||||
and text, it is a good formats for exchanging scanned documents.
|
||||
and text, it is a good format for exchanging scanned documents.
|
||||
|
||||
|image|
|
||||
|
||||
@@ -35,9 +40,9 @@ have one image. Some scanners or scanning software will segment pages
|
||||
into monochromatic text and color regions for example, to improve the
|
||||
compression ratio and appearance of the page.
|
||||
|
||||
Rasterizing a PDF is the process of generating an image suitable for
|
||||
display or analyzing with an OCR engine. OCR engines like Tesseract work
|
||||
with images, not vector objects.
|
||||
Rasterizing a PDF is the process of generating corresponding raster images.
|
||||
OCR engines like Tesseract work with images, not scalable vector graphics
|
||||
or mixed raster-vector-text graphics such as PDF.
|
||||
|
||||
About PDF/A
|
||||
===========
|
||||
@@ -76,7 +81,7 @@ OCRmyPDF analyzes each page of a PDF to determine the colorspace and
|
||||
resolution (DPI) needed to capture all of the information on that page
|
||||
without losing content. It uses
|
||||
`Ghostscript <http://ghostscript.com/>`__ to rasterize the page, and
|
||||
then performs on OCR on the rasterized image to create an OCR "layer".
|
||||
then performs on OCR the rasterized image to create an OCR "layer".
|
||||
The layer is then grafted back onto the original PDF.
|
||||
|
||||
While one can use a program like Ghostscript or ImageMagick to get an
|
||||
@@ -84,9 +89,9 @@ image and put the image through Tesseract, that actually creates a new
|
||||
PDF and many details may be lost. OCRmyPDF can produce a minimally
|
||||
changed PDF as output.
|
||||
|
||||
OCRmyPDF also some image processing options like deskew which improve
|
||||
the appearance of files and quality of OCR. When these are used, the OCR
|
||||
layer is grafted onto the processed image instead.
|
||||
OCRmyPDF also provides some image processing options, like deskew, which
|
||||
improves the appearance of files and quality of OCR. When these are used,
|
||||
the OCR layer is grafted onto the processed image instead.
|
||||
|
||||
By default, OCRmyPDF produces archival PDFs – PDF/A, which are a
|
||||
stricter subset of PDF features designed for long term archives. If
|
||||
@@ -207,8 +212,9 @@ consider one of these similar open source programs:
|
||||
|
||||
- pdf2pdfocr
|
||||
- pdfsandwich
|
||||
- pypdfocr
|
||||
- pdfbeads
|
||||
|
||||
Ghostscript recently added three "pdfocr" output devices. They work by
|
||||
rasterizing all content and converting all pages to a single colour space.
|
||||
|
||||
Web front-ends
|
||||
==============
|
||||
|
||||
+3
-3
@@ -9,11 +9,11 @@ encoding was patented for a long time. All known JBIG2 US patents have
|
||||
expired as of 2017, but it is possible that unknown patents exist.
|
||||
|
||||
JBIG2 encoding is recommended for OCRmyPDF and is used to losslessly
|
||||
create smaller PDFs. If JBIG2 encoding not available, lower quality
|
||||
create smaller PDFs. If JBIG2 encoding is not available, lower quality
|
||||
encodings will be used.
|
||||
|
||||
JBIG2 decoding is not patented and is performed automatically by most
|
||||
PDF viewers. It is widely supported has been part of the PDF
|
||||
PDF viewers. It is widely supported and has been part of the PDF
|
||||
specification since 2001.
|
||||
|
||||
On macOS, Homebrew packages jbig2enc and OCRmyPDF includes it by
|
||||
@@ -37,7 +37,7 @@ Lossy mode JBIG2
|
||||
|
||||
OCRmyPDF provides lossy mode JBIG2 as an advanced feature. Users should
|
||||
`review the technical concerns with JBIG2 in lossy
|
||||
mode <https://abbyy.technology/en:kb:tip:jbig2_compression_and_ocr>`__
|
||||
mode <https://en.wikipedia.org/wiki/JBIG2#Disadvantages>`__
|
||||
and decide if this feature is acceptable for their use case.
|
||||
|
||||
JBIG2 lossy mode does achieve higher compression ratios than any other
|
||||
|
||||
@@ -19,7 +19,7 @@ PDF is a rich, complex file format. The official PDF 1.7 specification,
|
||||
ISO 32000:2008, is hundreds of pages long and references several annexes
|
||||
each of which are similar in length. PDFs can contain video, audio, XML,
|
||||
JavaScript and other programming, and forms. In some cases, they can
|
||||
open internet connections to pre-selected URLs. All of these possible
|
||||
open internet connections to pre-selected URLs. All of these are possible
|
||||
attack vectors.
|
||||
|
||||
In short, PDFs `may contain
|
||||
@@ -31,7 +31,7 @@ describes a high-paranoia method which allows potentially hostile PDFs
|
||||
to be viewed and rasterized safely in a disposable virtual machine. A
|
||||
trusted PDF created in this manner is converted to images and loses all
|
||||
information making it searchable and losing all compression. OCRmyPDF
|
||||
could be used restore searchability.
|
||||
could be used to restore searchability.
|
||||
|
||||
How OCRmyPDF processes PDFs
|
||||
===========================
|
||||
@@ -41,8 +41,8 @@ layer. First, it runs all PDFs through
|
||||
`pikepdf <https://github.com/pikepdf/pikepdf>`__, a library based on
|
||||
`qpdf <https://github.com/qpdf/qpdf>`__, a program that repairs PDFs
|
||||
with syntax errors. This is done because, in the author's experience, a
|
||||
significant number of PDFs in the wild especially those created by
|
||||
scanners are not well-formed files. qpdf makes it more likely that
|
||||
significant number of PDFs in the wild, especially those created by
|
||||
scanners, are not well-formed files. qpdf makes it more likely that
|
||||
OCRmyPDF will succeed, but offers no security guarantees. qpdf is also
|
||||
used to split the PDF into single page PDFs.
|
||||
|
||||
@@ -66,8 +66,8 @@ service. OCRmyPDF relies on Ghostscript, and therefore, if deployed
|
||||
online one should be prepared to comply with Ghostscript's Affero GPL
|
||||
license, and any other licenses.
|
||||
|
||||
Setting aside these concerns, a side effect of OCRmyPDF is it may
|
||||
incidentally sanitize PDFs that contain certain types of malware. It
|
||||
Setting aside these concerns, a side effect of OCRmyPDF is that it may
|
||||
incidentally sanitize PDFs containing certain types of malware. It
|
||||
repairs the PDF with pikepdf/libqpdf, which could correct malformed PDF
|
||||
structures that are part of an attack. When PDF/A output is selected
|
||||
(the default), the input PDF is partially reconstructed by Ghostscript.
|
||||
@@ -83,7 +83,7 @@ Limiting CPU usage
|
||||
OCRmyPDF will attempt to use all available CPUs and storage, so
|
||||
executing ``nice ocrmypdf`` or limiting the number of jobs with the
|
||||
``-j`` argument may ensure the server remains available. Another option
|
||||
would be run OCRmyPDF jobs inside a Docker container, a virtual machine,
|
||||
would be to run OCRmyPDF jobs inside a Docker container, a virtual machine,
|
||||
or a cloud instance, which can impose its own limits on CPU usage and be
|
||||
terminated "from orbit" if it fails to complete.
|
||||
|
||||
|
||||
@@ -1,392 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
||||
-->
|
||||
<!-- Title: Pipeline: Pages: 1 -->
|
||||
<svg width="1484pt" height="1277pt"
|
||||
viewBox="0.00 0.00 1484.00 1277.20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1273.1977)">
|
||||
<title>Pipeline:</title>
|
||||
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1273.1977 1480,-1273.1977 1480,4 -4,4"/>
|
||||
<g id="clust1" class="cluster">
|
||||
<title>clustertasks</title>
|
||||
<polygon fill="none" stroke="#000000" points="8,-8 8,-1261.1977 1468,-1261.1977 1468,-8 8,-8"/>
|
||||
<text text-anchor="middle" x="738" y="-1233.1977" font-family="Times,serif" font-size="30.00" fill="#ff3232">Pipeline:</text>
|
||||
</g>
|
||||
<!-- t0 -->
|
||||
<g id="node1" class="node">
|
||||
<title>t0</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1215.7053,-1215.1977 1006.2947,-1215.1977 1002.2947,-1211.1977 1002.2947,-1179.1977 1211.7053,-1179.1977 1215.7053,-1183.1977 1215.7053,-1215.1977"/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.7053,-1211.1977 1002.2947,-1211.1977 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.7053,-1211.1977 1211.7053,-1179.1977 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.7053,-1211.1977 1215.7053,-1215.1977 "/>
|
||||
<text text-anchor="middle" x="1109" y="-1191.1977" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.triage</text>
|
||||
</g>
|
||||
<!-- t1 -->
|
||||
<g id="node2" class="node">
|
||||
<title>t1</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1280.0433,-1157.1977 941.9567,-1157.1977 937.9567,-1153.1977 937.9567,-1121.1977 1276.0433,-1121.1977 1280.0433,-1125.1977 1280.0433,-1157.1977"/>
|
||||
<polyline fill="none" stroke="#000000" points="1276.0433,-1153.1977 937.9567,-1153.1977 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1276.0433,-1153.1977 1276.0433,-1121.1977 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1276.0433,-1153.1977 1280.0433,-1157.1977 "/>
|
||||
<text text-anchor="middle" x="1109" y="-1133.1977" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.repair_and_parse_pdf</text>
|
||||
</g>
|
||||
<!-- t0->t1 -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>t0->t1</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1109,-1179.1641C1109,-1175.4895 1109,-1171.5395 1109,-1167.604"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1112.5001,-1167.4199 1109,-1157.4199 1105.5001,-1167.42 1112.5001,-1167.4199"/>
|
||||
</g>
|
||||
<!-- t2 -->
|
||||
<g id="node3" class="node">
|
||||
<title>t2</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1030.0926,-1078.2732 785,-1095.1731 539.9074,-1078.2732 540.1362,-1050.9285 1029.8638,-1050.9285 1030.0926,-1078.2732"/>
|
||||
<polygon fill="none" stroke="#000000" points="1034.1249,-1082.0021 785,-1099.1801 535.8751,-1082.0021 536.1685,-1046.931 1033.8315,-1046.931 1034.1249,-1082.0021"/>
|
||||
<text text-anchor="middle" x="785" y="-1064.7153" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.marker_pages</text>
|
||||
</g>
|
||||
<!-- t1->t2 -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>t1->t2</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1023.449,-1121.1152C984.5695,-1112.8974 938.0675,-1103.0685 896.4957,-1094.2816"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="897.1066,-1090.8335 886.5989,-1092.1898 895.6589,-1097.6822 897.1066,-1090.8335"/>
|
||||
</g>
|
||||
<!-- t16 -->
|
||||
<g id="node17" class="node">
|
||||
<title>t16</title>
|
||||
<polygon fill="#00cc66" stroke="#000000" points="1215.5059,-328.1861 942.4941,-328.1861 938.4941,-324.1861 938.4941,-292.1861 1211.5059,-292.1861 1215.5059,-296.1861 1215.5059,-328.1861"/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.5059,-324.1861 938.4941,-324.1861 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.5059,-324.1861 1211.5059,-292.1861 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1211.5059,-324.1861 1215.5059,-328.1861 "/>
|
||||
<text text-anchor="middle" x="1077" y="-304.1861" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.weave_layers</text>
|
||||
</g>
|
||||
<!-- t1->t16 -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>t1->t16</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1097.2373,-1120.9576C1077.987,-1088.7184 1043.7317,-1019.7372 1063,-963.2656 1106.87,-834.6914 1482.8098,-573.3183 1409,-459.2656 1362.7595,-387.8137 1273.2613,-350.2799 1198.8305,-330.7528"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1199.4555,-327.3005 1188.9015,-328.2301 1197.7316,-334.0849 1199.4555,-327.3005"/>
|
||||
</g>
|
||||
<!-- t17 -->
|
||||
<g id="node18" class="node">
|
||||
<title>t17</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1439.5156,-1009.7492 1076.4844,-1009.7492 1072.4844,-1005.7492 1072.4844,-973.7492 1435.5156,-973.7492 1439.5156,-977.7492 1439.5156,-1009.7492"/>
|
||||
<polyline fill="none" stroke="#000000" points="1435.5156,-1005.7492 1072.4844,-1005.7492 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1435.5156,-1005.7492 1435.5156,-973.7492 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1435.5156,-1005.7492 1439.5156,-1009.7492 "/>
|
||||
<text text-anchor="middle" x="1256" y="-985.7492" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.generate_postscript_stub</text>
|
||||
</g>
|
||||
<!-- t1->t17 -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>t1->t17</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1127.0251,-1121.1176C1153.0342,-1095.0292 1201.2007,-1046.7157 1230.7429,-1017.0834"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1233.2458,-1019.5302 1237.8275,-1009.9772 1228.2885,-1014.5879 1233.2458,-1019.5302"/>
|
||||
</g>
|
||||
<!-- t18 -->
|
||||
<g id="node19" class="node">
|
||||
<title>t18</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1070.189,-214.4288 1263,-187.1099 1455.811,-214.4288 1455.631,-258.6317 1070.369,-258.6317 1070.189,-214.4288"/>
|
||||
<polygon fill="none" stroke="#000000" points="1066.1715,-210.9543 1263,-183.0662 1459.8285,-210.9543 1459.6181,-262.6353 1066.3819,-262.6353 1066.1715,-210.9543"/>
|
||||
<text text-anchor="middle" x="1263" y="-220.6461" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.metadata_fixup</text>
|
||||
</g>
|
||||
<!-- t1->t18 -->
|
||||
<g id="edge28" class="edge">
|
||||
<title>t1->t18</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1241.1115,-1121.1192C1311.0076,-1105.2558 1393.5851,-1075.5895 1449,-1020.2329 1458.4922,-1010.7507 1459,-1005.1661 1459,-991.7492 1459,-991.7492 1459,-991.7492 1459,-393.7258 1459,-341.9727 1441.8377,-325.2216 1402,-292.1861 1390.9869,-283.0534 1378.4885,-274.871 1365.6104,-267.6415"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1367.1079,-264.4723 1356.6476,-262.7888 1363.775,-270.6279 1367.1079,-264.4723"/>
|
||||
</g>
|
||||
<!-- t3 -->
|
||||
<g id="node4" class="node">
|
||||
<title>t3</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1015.5194,-999.3074 785,-1016.2081 554.4806,-999.3074 554.6958,-971.9616 1015.3042,-971.9616 1015.5194,-999.3074"/>
|
||||
<polygon fill="none" stroke="#000000" points="1019.5491,-1003.0204 785,-1020.2165 550.4509,-1003.0204 550.7267,-967.9639 1019.2733,-967.9639 1019.5491,-1003.0204"/>
|
||||
<text text-anchor="middle" x="785" y="-985.7492" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_or_skip</text>
|
||||
</g>
|
||||
<!-- t2->t3 -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>t2->t3</title>
|
||||
<path fill="none" stroke="#0044a0" d="M785,-1046.5938C785,-1041.5635 785,-1036.139 785,-1030.7273"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="788.5001,-1030.4427 785,-1020.4427 781.5001,-1030.4428 788.5001,-1030.4427"/>
|
||||
</g>
|
||||
<!-- t4 -->
|
||||
<g id="node5" class="node">
|
||||
<title>t4</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="889.3166,-941.2656 582.6834,-941.2656 578.6834,-937.2656 578.6834,-905.2656 885.3166,-905.2656 889.3166,-909.2656 889.3166,-941.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="885.3166,-937.2656 578.6834,-937.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="885.3166,-937.2656 885.3166,-905.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="885.3166,-937.2656 889.3166,-941.2656 "/>
|
||||
<text text-anchor="middle" x="734" y="-917.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.rasterize_preview</text>
|
||||
</g>
|
||||
<!-- t3->t4 -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>t3->t4</title>
|
||||
<path fill="none" stroke="#0044a0" d="M767.1627,-967.797C762.8396,-961.9919 758.1927,-955.7519 753.7858,-949.8343"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="756.3465,-947.4129 747.5666,-941.483 750.7323,-951.5939 756.3465,-947.4129"/>
|
||||
</g>
|
||||
<!-- t5 -->
|
||||
<g id="node6" class="node">
|
||||
<title>t5</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1028.0824,-883.2656 769.9176,-883.2656 765.9176,-879.2656 765.9176,-847.2656 1024.0824,-847.2656 1028.0824,-851.2656 1028.0824,-883.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="1024.0824,-879.2656 765.9176,-879.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1024.0824,-879.2656 1024.0824,-847.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1024.0824,-879.2656 1028.0824,-883.2656 "/>
|
||||
<text text-anchor="middle" x="897" y="-859.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.orient_page</text>
|
||||
</g>
|
||||
<!-- t3->t5 -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>t3->t5</title>
|
||||
<path fill="none" stroke="#0044a0" d="M869.1177,-967.8063C880.553,-961.0264 890.81,-952.3527 898,-941.2656 907.042,-927.3226 906.9457,-908.7053 904.5139,-893.387"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="907.914,-892.5383 902.5408,-883.4071 901.0469,-893.8961 907.914,-892.5383"/>
|
||||
</g>
|
||||
<!-- t4->t5 -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>t4->t5</title>
|
||||
<path fill="none" stroke="#0044a0" d="M784.6807,-905.2319C801.0865,-899.3943 819.4462,-892.8614 836.4913,-886.7963"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="838.1026,-889.938 846.3506,-883.288 835.7559,-883.343 838.1026,-889.938"/>
|
||||
</g>
|
||||
<!-- t6 -->
|
||||
<g id="node7" class="node">
|
||||
<title>t6</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1064.7325,-825.2656 689.2675,-825.2656 685.2675,-821.2656 685.2675,-789.2656 1060.7325,-789.2656 1064.7325,-793.2656 1064.7325,-825.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="1060.7325,-821.2656 685.2675,-821.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1060.7325,-821.2656 1060.7325,-789.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1060.7325,-821.2656 1064.7325,-825.2656 "/>
|
||||
<text text-anchor="middle" x="875" y="-801.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.rasterize_with_ghostscript</text>
|
||||
</g>
|
||||
<!-- t5->t6 -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>t5->t6</title>
|
||||
<path fill="none" stroke="#0044a0" d="M890.1597,-847.2319C888.6839,-843.3412 887.0909,-839.1417 885.5115,-834.9776"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="888.731,-833.5965 881.9119,-825.4878 882.186,-836.0791 888.731,-833.5965"/>
|
||||
</g>
|
||||
<!-- t13 -->
|
||||
<g id="node16" class="node">
|
||||
<title>t13</title>
|
||||
<polygon fill="#00cc66" stroke="#000000" points="1077,-515.2656 754.4141,-487.2656 1077,-459.2656 1399.5859,-487.2656 1077,-515.2656"/>
|
||||
<text text-anchor="middle" x="1077" y="-481.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_image_layer</text>
|
||||
</g>
|
||||
<!-- t5->t13 -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>t5->t13</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1000.2704,-847.241C1031.2359,-840.6873 1060.5415,-832.9862 1074,-825.2656 1114.0954,-802.2644 1145,-795.4899 1145,-749.2656 1145,-749.2656 1145,-749.2656 1145,-633.2656 1145,-590.368 1154.8687,-575.2844 1135,-537.2656 1131.571,-530.7041 1126.8893,-524.6314 1121.6622,-519.1451"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1123.8989,-516.4405 1114.2626,-512.0367 1119.0494,-521.4885 1123.8989,-516.4405"/>
|
||||
</g>
|
||||
<!-- t7 -->
|
||||
<g id="node8" class="node">
|
||||
<title>t7</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="856.0801,-767.2656 431.9199,-767.2656 427.9199,-763.2656 427.9199,-731.2656 852.0801,-731.2656 856.0801,-735.2656 856.0801,-767.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="852.0801,-763.2656 427.9199,-763.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="852.0801,-763.2656 852.0801,-731.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="852.0801,-763.2656 856.0801,-767.2656 "/>
|
||||
<text text-anchor="middle" x="642" y="-743.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_remove_background</text>
|
||||
</g>
|
||||
<!-- t6->t7 -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>t6->t7</title>
|
||||
<path fill="none" stroke="#0044a0" d="M802.5546,-789.2319C777.7884,-783.067 749.9071,-776.1266 724.4138,-769.7806"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="724.95,-766.3073 714.4006,-767.288 723.259,-773.1 724.95,-766.3073"/>
|
||||
</g>
|
||||
<!-- t12 -->
|
||||
<g id="node15" class="node">
|
||||
<title>t12</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="742,-593.2656 358.1874,-565.2656 742,-537.2656 1125.8126,-565.2656 742,-593.2656"/>
|
||||
<text text-anchor="middle" x="742" y="-559.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_visible_page_image</text>
|
||||
</g>
|
||||
<!-- t6->t12 -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>t6->t12</title>
|
||||
<path fill="none" stroke="#0044a0" d="M875.1443,-789.1129C874.6867,-773.2956 872.5831,-750.0189 865,-731.2656 844.2991,-680.0716 804.0126,-630.4165 775.1838,-598.9641"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="777.4937,-596.3085 768.1202,-591.3701 772.3682,-601.076 777.4937,-596.3085"/>
|
||||
</g>
|
||||
<!-- t8 -->
|
||||
<g id="node9" class="node">
|
||||
<title>t8</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="732.6759,-709.2656 413.3241,-709.2656 409.3241,-705.2656 409.3241,-673.2656 728.6759,-673.2656 732.6759,-677.2656 732.6759,-709.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="728.6759,-705.2656 409.3241,-705.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="728.6759,-705.2656 728.6759,-673.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="728.6759,-705.2656 732.6759,-709.2656 "/>
|
||||
<text text-anchor="middle" x="571" y="-685.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_deskew</text>
|
||||
</g>
|
||||
<!-- t7->t8 -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>t7->t8</title>
|
||||
<path fill="none" stroke="#0044a0" d="M619.9243,-731.2319C613.9709,-726.3685 607.4267,-721.0226 601.115,-715.8666"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="603.2653,-713.1037 593.3065,-709.4878 598.8367,-718.5248 603.2653,-713.1037"/>
|
||||
</g>
|
||||
<!-- t7->t12 -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>t7->t12</title>
|
||||
<path fill="none" stroke="#0044a0" d="M717.0346,-731.1646C726.8757,-725.6884 735.7103,-718.5557 742,-709.2656 763.0291,-678.205 759.4083,-634.0888 752.8082,-602.8898"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="756.1481,-601.7976 750.487,-592.842 749.3278,-603.3733 756.1481,-601.7976"/>
|
||||
</g>
|
||||
<!-- t9 -->
|
||||
<g id="node10" class="node">
|
||||
<title>t9</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="712.8828,-651.2656 411.1172,-651.2656 407.1172,-647.2656 407.1172,-615.2656 708.8828,-615.2656 712.8828,-619.2656 712.8828,-651.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="708.8828,-647.2656 407.1172,-647.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="708.8828,-647.2656 708.8828,-615.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="708.8828,-647.2656 712.8828,-651.2656 "/>
|
||||
<text text-anchor="middle" x="560" y="-627.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_clean</text>
|
||||
</g>
|
||||
<!-- t8->t9 -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>t8->t9</title>
|
||||
<path fill="none" stroke="#0044a0" d="M567.5798,-673.2319C566.8624,-669.4493 566.0897,-665.3747 565.3216,-661.3247"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="568.7581,-660.6605 563.4559,-651.4878 561.8807,-661.9649 568.7581,-660.6605"/>
|
||||
</g>
|
||||
<!-- t8->t12 -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>t8->t12</title>
|
||||
<path fill="none" stroke="#0044a0" d="M670.0045,-673.2618C693.2528,-667.2338 713.6919,-659.8307 722,-651.2656 734.1971,-638.6912 739.4901,-620.2051 741.6123,-603.5914"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="745.1041,-603.8427 742.5574,-593.5585 738.1349,-603.1862 745.1041,-603.8427"/>
|
||||
</g>
|
||||
<!-- t10 -->
|
||||
<g id="node11" class="node">
|
||||
<title>t10</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="340.1094,-583.2656 35.8906,-583.2656 31.8906,-579.2656 31.8906,-547.2656 336.1094,-547.2656 340.1094,-551.2656 340.1094,-583.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="336.1094,-579.2656 31.8906,-579.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="336.1094,-579.2656 336.1094,-547.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="336.1094,-579.2656 340.1094,-583.2656 "/>
|
||||
<text text-anchor="middle" x="186" y="-559.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_ocr_image</text>
|
||||
</g>
|
||||
<!-- t9->t10 -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>t9->t10</title>
|
||||
<path fill="none" stroke="#0044a0" d="M460.7568,-615.2213C409.7279,-605.9434 347.4237,-594.6153 295.0537,-585.0935"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="295.5223,-581.6214 285.0575,-583.276 294.2701,-588.5085 295.5223,-581.6214"/>
|
||||
</g>
|
||||
<!-- t9->t12 -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>t9->t12</title>
|
||||
<path fill="none" stroke="#0044a0" d="M608.2948,-615.2213C627.0226,-608.2242 648.8712,-600.0609 669.4134,-592.3859"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="670.9148,-595.5613 679.0573,-588.7826 668.4648,-589.004 670.9148,-595.5613"/>
|
||||
</g>
|
||||
<!-- t11 -->
|
||||
<g id="node12" class="node">
|
||||
<title>t11</title>
|
||||
<polygon fill="#00cc66" stroke="#000000" points="334.0996,-505.2656 19.9004,-505.2656 15.9004,-501.2656 15.9004,-469.2656 330.0996,-469.2656 334.0996,-473.2656 334.0996,-505.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="330.0996,-501.2656 15.9004,-501.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="330.0996,-501.2656 330.0996,-469.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="330.0996,-501.2656 334.0996,-505.2656 "/>
|
||||
<text text-anchor="middle" x="175" y="-481.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_tesseract_hocr</text>
|
||||
</g>
|
||||
<!-- t10->t11 -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>t10->t11</title>
|
||||
<path fill="none" stroke="#0044a0" d="M183.4487,-547.1748C182.1254,-537.7914 180.4788,-526.1154 178.9917,-515.5701"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="182.4378,-514.9417 177.5755,-505.5285 175.5064,-515.9193 182.4378,-514.9417"/>
|
||||
</g>
|
||||
<!-- t15 -->
|
||||
<g id="node14" class="node">
|
||||
<title>t15</title>
|
||||
<polygon fill="#ff69b4" stroke="#000000" points="736.2696,-505.2656 355.7304,-505.2656 351.7304,-501.2656 351.7304,-469.2656 732.2696,-469.2656 736.2696,-473.2656 736.2696,-505.2656"/>
|
||||
<polyline fill="none" stroke="#000000" points="732.2696,-501.2656 351.7304,-501.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="732.2696,-501.2656 732.2696,-469.2656 "/>
|
||||
<polyline fill="none" stroke="#000000" points="732.2696,-501.2656 736.2696,-505.2656 "/>
|
||||
<text text-anchor="middle" x="544" y="-481.2656" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_tesseract_textonly_pdf</text>
|
||||
</g>
|
||||
<!-- t10->t15 -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>t10->t15</title>
|
||||
<path fill="none" stroke="#0044a0" d="M269.0322,-547.1748C323.4947,-535.3086 394.7854,-519.776 451.1284,-507.5002"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="452.0829,-510.8744 461.1086,-505.3257 450.5927,-504.0348 452.0829,-510.8744"/>
|
||||
</g>
|
||||
<!-- t14 -->
|
||||
<g id="node13" class="node">
|
||||
<title>t14</title>
|
||||
<polygon fill="#00cc66" stroke="#000000" points="330.0433,-411.7258 21.9567,-411.7258 17.9567,-407.7258 17.9567,-375.7258 326.0433,-375.7258 330.0433,-379.7258 330.0433,-411.7258"/>
|
||||
<polyline fill="none" stroke="#000000" points="326.0433,-407.7258 17.9567,-407.7258 "/>
|
||||
<polyline fill="none" stroke="#000000" points="326.0433,-407.7258 326.0433,-375.7258 "/>
|
||||
<polyline fill="none" stroke="#000000" points="326.0433,-407.7258 330.0433,-411.7258 "/>
|
||||
<text text-anchor="middle" x="174" y="-387.7258" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.render_hocr_page</text>
|
||||
</g>
|
||||
<!-- t11->t14 -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>t11->t14</title>
|
||||
<path fill="none" stroke="#0044a0" d="M174.8072,-469.2302C174.6642,-455.8584 174.4666,-437.3702 174.3027,-422.0357"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="177.8024,-421.987 174.1956,-412.025 170.8028,-422.0619 177.8024,-421.987"/>
|
||||
</g>
|
||||
<!-- t19 -->
|
||||
<g id="node22" class="node">
|
||||
<title>t19</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="351.7205,-381.5085 545,-354.1897 738.2795,-381.5085 738.0991,-425.7112 351.9009,-425.7112 351.7205,-381.5085"/>
|
||||
<polygon fill="none" stroke="#000000" points="347.7033,-378.0329 545,-350.1463 742.2967,-378.0329 742.0858,-429.7148 347.9142,-429.7148 347.7033,-378.0329"/>
|
||||
<text text-anchor="middle" x="545" y="-387.7258" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.merge_sidecars</text>
|
||||
</g>
|
||||
<!-- t11->t19 -->
|
||||
<g id="edge32" class="edge">
|
||||
<title>t11->t19</title>
|
||||
<path fill="none" stroke="#0044a0" d="M246.3397,-469.2302C287.966,-458.7066 342.1269,-445.0142 392.8772,-432.184"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="393.8058,-435.5594 402.6429,-429.7151 392.0901,-428.773 393.8058,-435.5594"/>
|
||||
</g>
|
||||
<!-- t14->t16 -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>t14->t16</title>
|
||||
<path fill="none" stroke="#0044a0" d="M230.6615,-375.7128C262.2207,-366.4581 302.4172,-355.9425 339,-350.1861 448.3957,-332.9725 745.7869,-320.7866 927.9215,-314.6743"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="928.248,-318.1655 938.1258,-314.3342 928.0148,-311.1693 928.248,-318.1655"/>
|
||||
</g>
|
||||
<!-- t15->t16 -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>t15->t16</title>
|
||||
<path fill="none" stroke="#0044a0" d="M630.0636,-469.2083C667.5329,-460.6467 711.76,-449.5912 751,-437.2656 850.4985,-406.0121 963.1653,-359.5222 1026.586,-332.2894"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1028.1566,-335.4238 1035.9553,-328.2523 1025.3866,-328.9951 1028.1566,-335.4238"/>
|
||||
</g>
|
||||
<!-- t15->t19 -->
|
||||
<g id="edge31" class="edge">
|
||||
<title>t15->t19</title>
|
||||
<path fill="none" stroke="#0044a0" d="M544.1928,-469.2302C544.2822,-460.8687 544.393,-450.5066 544.5035,-440.166"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="548.006,-439.9443 544.6132,-429.9075 541.0064,-439.8694 548.006,-439.9443"/>
|
||||
</g>
|
||||
<!-- t12->t13 -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>t12->t13</title>
|
||||
<path fill="none" stroke="#0044a0" d="M833.9833,-543.8486C879.0975,-533.3444 933.4556,-520.6879 979.3116,-510.0109"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="980.3156,-513.3709 989.2614,-507.6943 978.7282,-506.5532 980.3156,-513.3709"/>
|
||||
</g>
|
||||
<!-- t13->t16 -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>t13->t16</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1077,-459.2068C1077,-426.2624 1077,-371.9187 1077,-338.7552"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1080.5001,-338.3818 1077,-328.3819 1073.5001,-338.3819 1080.5001,-338.3818"/>
|
||||
</g>
|
||||
<!-- t16->t18 -->
|
||||
<g id="edge27" class="edge">
|
||||
<title>t16->t18</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1117.3592,-292.0592C1133.8695,-284.6437 1153.6803,-275.7459 1173.2953,-266.9361"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1174.8979,-270.0531 1182.586,-262.7632 1172.0299,-263.6676 1174.8979,-270.0531"/>
|
||||
</g>
|
||||
<!-- t17->t18 -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>t17->t18</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1326.2292,-973.7283C1377.8362,-955.768 1439,-922.4247 1439,-865.2656 1439,-865.2656 1439,-865.2656 1439,-393.7258 1439,-338.7092 1393.2056,-296.3464 1348.3356,-268.0433"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1350.0403,-264.9831 1339.6842,-262.7465 1346.3852,-270.9531 1350.0403,-264.9831"/>
|
||||
</g>
|
||||
<!-- t20 -->
|
||||
<g id="node20" class="node">
|
||||
<title>t20</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1400.3184,-161.1062 1129.6816,-161.1062 1125.6816,-157.1062 1125.6816,-125.1062 1396.3184,-125.1062 1400.3184,-129.1062 1400.3184,-161.1062"/>
|
||||
<polyline fill="none" stroke="#000000" points="1396.3184,-157.1062 1125.6816,-157.1062 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1396.3184,-157.1062 1396.3184,-125.1062 "/>
|
||||
<polyline fill="none" stroke="#000000" points="1396.3184,-157.1062 1400.3184,-161.1062 "/>
|
||||
<text text-anchor="middle" x="1263" y="-137.1062" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.optimize_pdf</text>
|
||||
</g>
|
||||
<!-- t18->t20 -->
|
||||
<g id="edge29" class="edge">
|
||||
<title>t18->t20</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1263,-182.9188C1263,-179.129 1263,-175.3607 1263,-171.739"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1266.5001,-171.4394 1263,-161.4394 1259.5001,-171.4394 1266.5001,-171.4394"/>
|
||||
</g>
|
||||
<!-- t21 -->
|
||||
<g id="node21" class="node">
|
||||
<title>t21</title>
|
||||
<polygon fill="#efa03b" stroke="#000000" points="1096.0652,-47.332 1263,-20.0049 1429.9348,-47.332 1429.779,-91.5483 1096.221,-91.5483 1096.0652,-47.332"/>
|
||||
<polygon fill="none" stroke="#000000" points="1092.0538,-43.9306 1263,-15.9468 1433.9462,-43.9306 1433.7643,-95.5532 1092.2357,-95.5532 1092.0538,-43.9306"/>
|
||||
<text text-anchor="middle" x="1263" y="-53.5531" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.copy_final</text>
|
||||
</g>
|
||||
<!-- t20->t21 -->
|
||||
<g id="edge30" class="edge">
|
||||
<title>t20->t21</title>
|
||||
<path fill="none" stroke="#0044a0" d="M1263,-124.9764C1263,-119.37 1263,-112.9163 1263,-106.2938"/>
|
||||
<polygon fill="#0044a0" stroke="#0044a0" points="1266.5001,-105.8456 1263,-95.8457 1259.5001,-105.8457 1266.5001,-105.8456"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 25 KiB |
+10
-2
@@ -61,9 +61,10 @@ similar to ``pytest`` packages such as ``pytest-cov`` (the package) and
|
||||
|
||||
.. note::
|
||||
|
||||
We strongly recommend plugin authors name their plugins with the prefix
|
||||
We recommend plugin authors name their plugins with the prefix
|
||||
``ocrmypdf-`` (for the package name on PyPI) and ``ocrmypdf_`` (for the
|
||||
module), just like pytest plugins.
|
||||
module), just like pytest plugins. At the same time, please make it clear
|
||||
that your package is not official.
|
||||
|
||||
Setuptools plugins
|
||||
==================
|
||||
@@ -86,6 +87,13 @@ named ``ocrmypdf-exampleplugin``:
|
||||
entry_points={"ocrmypdf": ["exampleplugin = exampleplugin.pluginmodule"]},
|
||||
)
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
# equivalent setup.cfg
|
||||
[options.entry_points]
|
||||
ocrmypdf =
|
||||
exampleplugin = exampleplugin.pluginmodule
|
||||
|
||||
Plugin requirements
|
||||
===================
|
||||
|
||||
|
||||
+217
-138
@@ -12,6 +12,111 @@ may be unreliable. Use the API to depend on precise behavior.
|
||||
The public API may be useful in scripts that launch OCRmyPDF processes or that
|
||||
wish to use some of its features for working with PDFs.
|
||||
|
||||
.. note::
|
||||
|
||||
Python 3.6 reaches end of life on December 23, 2021. We will end support
|
||||
for Python 3.6 around that time. The change will be marked with a major
|
||||
release.
|
||||
|
||||
v12.7.1
|
||||
=======
|
||||
|
||||
- Declare support for pdfminer.six v20211012.
|
||||
|
||||
v12.7.0
|
||||
=======
|
||||
|
||||
- Fixed test suite failure when using pikepdf 3.2.0 that was compiled with pybind11
|
||||
2.8.0. :issue:`843`
|
||||
- Improve advice to user about using ``--max-image-mpixels`` if OCR fails for this
|
||||
reason.
|
||||
- Minor documentation fixes. (Thanks to @mara004.)
|
||||
- Don't require importlib-metadata and importlib-resources backports on versions of
|
||||
Python where the standard library implementation is sufficient.
|
||||
(Thanks to Marco Genasci.)
|
||||
|
||||
v12.6.0
|
||||
=======
|
||||
|
||||
- Implemented ``--output-type=none`` to skip producing PDFs for applications that
|
||||
only want sidecar files (:issue:`787`).
|
||||
- Fixed ambiguities in descriptions of behavior of ``--jbig2-lossy``.
|
||||
- Various improvements to documentation.
|
||||
|
||||
v12.5.0
|
||||
=======
|
||||
|
||||
- Fixed build failure for the combination of PyPy 3.6 and pikepdf 3.0. This
|
||||
combination can work in a source build but does not work with wheels.
|
||||
- Accepted bot that wanted to upgrade our deprecated requirements.txt.
|
||||
- Documentation updates.
|
||||
- Replace pkg_resources and install dependency on setuptools with
|
||||
importlib-metadata and importlib-resources.
|
||||
- Fixed regression in hocrtransform causing text to be omitted when this
|
||||
renderer was used.
|
||||
- Fixed some typing errors.
|
||||
|
||||
v12.4.0
|
||||
=======
|
||||
|
||||
- When grafting text layers, use pikepdf's ``unparse_content_stream`` if available.
|
||||
- Confirmed support for pluggy 1.0. (Thanks @QuLogic.)
|
||||
- Fixed some typing issues, improved pre-commit settings, and fixed issues
|
||||
flagged by linters.
|
||||
- PyPy 7.3.3 (=Python 3.6) is now supported. Note that PyPy does not necessarily
|
||||
run faster, because the vast majority of OCRmyPDF's execution time is spent
|
||||
running OCR or generally executing native code. However, PyPy may bring speed
|
||||
improvements in some areas.
|
||||
|
||||
v12.3.3
|
||||
=======
|
||||
|
||||
- watcher.py: fixed interpretation of boolean env vars (:issue:`821`).
|
||||
- Adjust CI scripts to test Tesseract 5 betas.
|
||||
- Document our support for the Tesseract 5 betas.
|
||||
|
||||
v12.3.2
|
||||
=======
|
||||
|
||||
- Indicate support for flask 2.x, watcher 2.x (:issue:`815, 816`).
|
||||
|
||||
v12.3.1
|
||||
=======
|
||||
|
||||
- Fixed issue with selection of text when using the hOCR renderer (:issue:`813`).
|
||||
- Fixed build errors with the Docker image by upgrading to a newer Ubuntu.
|
||||
Also set the timezone of this image to UTC.
|
||||
|
||||
v12.3.0
|
||||
=======
|
||||
|
||||
- Fixed a regression introduced in Pillow 8.3.0. Pillow no longer rounds DPI
|
||||
for image resolutions. We now account for this (:issue:`802`).
|
||||
- We no longer use some API calls that are deprecated in the latest versions of
|
||||
pikepdf.
|
||||
- Improved error message when a language is requested that doesn't look like a
|
||||
typical ISO 639-2 code.
|
||||
- Fixed some tests that attempted to symlink on Windows, breaking tests on a
|
||||
Windows desktop but not usually on CI.
|
||||
- Documentation fixes (thanks to @mara004)
|
||||
|
||||
v12.2.0
|
||||
=======
|
||||
|
||||
- Fixed invalid Tesseract version number on Windows (:issue:`795`).
|
||||
- Documentation tweaks. Documentation build now depends on sphinx-issues package.
|
||||
|
||||
v12.1.0
|
||||
=======
|
||||
|
||||
- For security reasons we now require Pillow >= 8.2.x. (Older versions will continue
|
||||
to work if upgrading is not an option.)
|
||||
- The build system was reorganized to rely on ``setup.cfg`` instead of ``setup.py``.
|
||||
All changes should work with previously supported versions of setuptools.
|
||||
- The files in ``requirements/*`` are now considered deprecated but will be retained for v12.
|
||||
Instead use ``pip install ocrmypdf[test]`` instead of ``requirements/test.txt``, etc.
|
||||
These files will be removed in v13.
|
||||
|
||||
v12.0.3
|
||||
=======
|
||||
|
||||
@@ -24,15 +129,15 @@ v12.0.3
|
||||
v12.0.2
|
||||
=======
|
||||
|
||||
- Fix exception thrown when using ``--remove-background`` on files containing small
|
||||
images (#769).
|
||||
- Fixed exception thrown when using ``--remove-background`` on files containing small
|
||||
images (:issue:`769`).
|
||||
- Improve documentation for description of adding language packs to the Docker image
|
||||
and corrected name of French language pack.
|
||||
and corrected name of French language pack.
|
||||
|
||||
v12.0.1
|
||||
=======
|
||||
|
||||
- Fix "invalid version number" for untagged tesseract versions (#770).
|
||||
- Fixed "invalid version number" for untagged tesseract versions (:issue:`770`).
|
||||
|
||||
v12.0.0
|
||||
=======
|
||||
@@ -92,7 +197,7 @@ v12.0.0
|
||||
which ships with Ubuntu 18.04).
|
||||
- OCRmyPDF can now parse all of Tesseract version numbers, since several
|
||||
schemes have been in use.
|
||||
- Fixed an issue with parsing PDFs that contain images drawn at a scale of 0. (#761)
|
||||
- Fixed an issue with parsing PDFs that contain images drawn at a scale of 0. (:issue:`761`)
|
||||
- Removed a frequently repeated message about disabling mmap.
|
||||
|
||||
v11.7.3
|
||||
@@ -122,7 +227,7 @@ v11.7.0
|
||||
=======
|
||||
|
||||
- We now support using ``--sidecar`` in conjunction with ``--pages``; these arguments
|
||||
used to be mutually exclusive. (#735)
|
||||
used to be mutually exclusive. (:issue:`735`)
|
||||
- Fixed a possible issue with PDF/A-1b generation. Acrobat complained that our PDFs use
|
||||
object streams. More robust PDF/A validators like veraPDF don't consider this a
|
||||
problem, but we'll honor Acrobat's objection from here on. This may increase file
|
||||
@@ -132,13 +237,13 @@ v11.6.2
|
||||
=======
|
||||
|
||||
- Fixed a regression where the wrong page orientation would be produced when using
|
||||
arguments such as ``--deskew --rotate-pages`` (#730).
|
||||
arguments such as ``--deskew --rotate-pages`` (:issue:`730`).
|
||||
|
||||
v11.6.1
|
||||
=======
|
||||
|
||||
- Fixed an issue with attempting optimize unusually narrow-width images by excluding
|
||||
these images from optimization (#732).
|
||||
these images from optimization (:issue:`732`).
|
||||
- Remove an obsolete compatibility shim for a version of pikepdf that is no longer
|
||||
supported.
|
||||
|
||||
@@ -176,7 +281,7 @@ v11.4.5
|
||||
v11.4.4
|
||||
=======
|
||||
|
||||
- Fixed ``AttributeError: 'NoneType' object has no attribute 'userunit'``, issue #700,
|
||||
- Fixed ``AttributeError: 'NoneType' object has no attribute 'userunit'`` (:issue:`700`),
|
||||
related to OCRmyPDF not properly forwarded an error message from pdfminer.six.
|
||||
- Adjusted typing of some arguments.
|
||||
- ``ocrmypdf.ocr`` now takes a ``threading.Lock`` for reasons outlined in the
|
||||
@@ -219,7 +324,7 @@ v11.4.0
|
||||
``com.github.ocrmypdf`` to ``ocrmypdf.io``. Scripts that chose to depend on this
|
||||
prefix may need to be adjusted. (This has always been an implementation detail so is
|
||||
not considered part of the semantic versioning "contract".)
|
||||
- Fixed issue #692, where a particular file with malformed fonts would flood an
|
||||
- Fixed :issue:`692`, where a particular file with malformed fonts would flood an
|
||||
internal message cue by generating so many debug messages.
|
||||
- Fixed an exception on processing hOCR files with no page record. Tesseract
|
||||
is not known to generate such files.
|
||||
@@ -238,7 +343,7 @@ v11.3.3
|
||||
=======
|
||||
|
||||
- If unpaper outputs non-UTF-8 data, quietly fix this rather than choke on the
|
||||
conversion. (Possibly addresses #671.)
|
||||
conversion. (Possibly addresses :issue:`671`.)
|
||||
|
||||
v11.3.2
|
||||
=======
|
||||
@@ -251,7 +356,7 @@ v11.3.2
|
||||
as optimization candidates.
|
||||
- On some systems, unpaper seems to be unable to process the PNGs we offer it
|
||||
as input. We now convert the input to PNM format, which unpaper always accepts.
|
||||
Fixes #665 and #667.
|
||||
Fixes :issue:`665` and :issue:`667`.
|
||||
- DPI sent to unpaper is now rounded to a more reasonable number of decimal digits.
|
||||
- Debug and error messages from unpaper were being suppressed.
|
||||
- Some documentation tweaks.
|
||||
@@ -260,7 +365,7 @@ v11.3.1
|
||||
=======
|
||||
|
||||
- Declare support for new versions: pdfminer.six 20201018 and pikepdf 2.x
|
||||
- Fix warning related to ``--pdfa-image-compression`` that appears at the wrong
|
||||
- Fixed warning related to ``--pdfa-image-compression`` that appears at the wrong
|
||||
time.
|
||||
|
||||
v11.3.0
|
||||
@@ -280,7 +385,7 @@ v11.3.0
|
||||
macOS and Windows only where the parent process is not forked.
|
||||
- Fixed the hookspec of rasterize_pdf_page to remove default parameters that
|
||||
were not handled in an expected way by pluggy.
|
||||
- Fixed another issue with automatic page rotation (#658) due to the issue above.
|
||||
- Fixed another issue with automatic page rotation (:issue:`658`) due to the issue above.
|
||||
|
||||
v11.2.1
|
||||
=======
|
||||
@@ -302,7 +407,7 @@ v11.1.2
|
||||
- Fixed hOCR renderer writing the text in roughly reverse order. This should not
|
||||
affect reasonably smart PDF readers that properly locate the position of all
|
||||
text, but may confuse those that rely on the order of objects in the content
|
||||
stream. (#642)
|
||||
stream. (:issue:`642`)
|
||||
|
||||
v11.1.1
|
||||
=======
|
||||
@@ -315,9 +420,9 @@ v11.1.1
|
||||
v11.1.0
|
||||
=======
|
||||
|
||||
- Fixed page rotation issues: #634, #589.
|
||||
- Fixed page rotation issues: :issue:`634,589`.
|
||||
- Fixed some cases where optimization created an invalid image such as a
|
||||
1-bit "RGB" image: #629, #620.
|
||||
1-bit "RGB" image: :issue:`629,620`.
|
||||
- Page numbers are now displayed in debug logs when pages are being grafted.
|
||||
- ocrmypdf.optimize.rewrite_png and ocrmypdf.optimize.rewrite_png_as_g4 were
|
||||
marked deprecated. Strictly speaking these should have been internal APIs,
|
||||
@@ -330,7 +435,7 @@ v11.1.0
|
||||
v11.0.2
|
||||
=======
|
||||
|
||||
- Fixed issue #612, TypeError exception. Fixed by eliminating unnecessary repair of
|
||||
- Fixed :issue:`612`, TypeError exception. Fixed by eliminating unnecessary repair of
|
||||
input PDF metadata in memory.
|
||||
|
||||
v11.0.1
|
||||
@@ -347,7 +452,7 @@ v11.0.0
|
||||
- Project license changed to Mozilla Public License 2.0. Some miscellaneous
|
||||
code is now under MIT license and non-code content/media remains under
|
||||
CC-BY-SA 4.0. License changed with approval of all people who were found
|
||||
to have contributed to GPLv3 licensed sections of the project. (#600)
|
||||
to have contributed to GPLv3 licensed sections of the project. (:issue:`600`)
|
||||
- Because the license changed, this is being treated as a major version number
|
||||
change; however, there are no known breaking changes in functional behavior
|
||||
or API compared to v10.x.
|
||||
@@ -356,7 +461,7 @@ v10.3.3
|
||||
=======
|
||||
|
||||
- Fixed a "KeyError: 'dpi'" error message when using ``--threshold`` on an image.
|
||||
(#607)
|
||||
(:issue:`607`)
|
||||
|
||||
v10.3.2
|
||||
=======
|
||||
@@ -399,16 +504,16 @@ v10.2.0
|
||||
=======
|
||||
|
||||
- Update Docker image to use Ubuntu 20.04.
|
||||
- Fixed issue PDF/A acquires title "Untitled" after conversion. (#582)
|
||||
- Fixed issue PDF/A acquires title "Untitled" after conversion. (:issue:`582`)
|
||||
- Fixed a problem where, when using ``--pdf-renderer hocr``, some text would
|
||||
be missing from the output when using a more recent version of Tesseract.
|
||||
Tesseract began adding more detailed markup about the semantics of text
|
||||
that our HOCR transform did not recognize, so it ignored them. This option is
|
||||
not the default. If necessary ``--redo-ocr`` also redoing OCR to fix such issues.
|
||||
- Fixed an error in Python 3.9 beta, due to removal of deprecated
|
||||
``Element.getchildren()``. (#584)
|
||||
``Element.getchildren()``. (:issue:`584`)
|
||||
- Implemented support using the API with ``BytesIO`` and other file stream objects.
|
||||
(#545)
|
||||
(:issue:`545`)
|
||||
|
||||
v10.1.1
|
||||
=======
|
||||
@@ -501,7 +606,7 @@ v9.8.0
|
||||
|
||||
- Fixed issue where only the first PNG (FlateDecode) image in a file would be
|
||||
considered for optimization. File sizes should be improved from here on.
|
||||
- Fixed a startup crash when the chosen language was Japanese (#543).
|
||||
- Fixed a startup crash when the chosen language was Japanese (:issue:`543`).
|
||||
- Added options to configure polling and log level to watcher.py.
|
||||
|
||||
v9.7.2
|
||||
@@ -548,11 +653,11 @@ v9.6.1
|
||||
they can be copied out as whole files, and to ensure syntax checking
|
||||
is maintained.
|
||||
|
||||
- Fixed an error that caused bash completions to fail on macOS. (#502, #504;
|
||||
- Fixed an error that caused bash completions to fail on macOS. (:issue:`502,504`;
|
||||
@AlexanderWillner)
|
||||
- Fixed a rare case where OCRmyPDF threw an exception while processing a PDF
|
||||
with the wrong object type in its ``/Trailer /Info``. The error is now logged
|
||||
and incorrect object is ignored. (#497)
|
||||
and incorrect object is ignored. (:issue:`497`)
|
||||
- Removed potentially non-free file ``enron1.pdf`` and simplified the test that
|
||||
used it.
|
||||
- Removed potentially non-free file ``misc/media/logo.afdesign``.
|
||||
@@ -754,7 +859,7 @@ v8.3.1
|
||||
======
|
||||
|
||||
- Fixed an issue where PDFs with malformed metadata would be rendered as
|
||||
blank pages. `#398 <https://github.com/jbarlow83/OCRmyPDF/issues/398>`_.
|
||||
blank pages. :issue:`398`.
|
||||
|
||||
v8.3.0
|
||||
======
|
||||
@@ -837,7 +942,7 @@ v8.2.0
|
||||
designed. However, quality would not be impacted. Lossless JBIG2 was
|
||||
entirely unaffected.
|
||||
- Updated dependencies, including pikepdf to 1.1.0. This fixes
|
||||
`#358 <https://github.com/jbarlow83/OCRmyPDF/issues/358>`__.
|
||||
:issue:`358`.
|
||||
- The install-time version checks for certain external programs have
|
||||
been removed from setup.py. These tests are now performed at
|
||||
run-time.
|
||||
@@ -858,7 +963,7 @@ v8.1.0
|
||||
(specifically, those with invalid destination objects)
|
||||
- Fixed an issue when using ``--tesseract-timeout`` and image
|
||||
processing features on a file with more than 100 pages.
|
||||
`#347 <https://github.com/jbarlow83/OCRmyPDF/issues/347>`__
|
||||
:issue:`347`
|
||||
- OCRmyPDF now always calls ``os.nice(5)`` to signal to operating
|
||||
systems that it is a background process.
|
||||
|
||||
@@ -866,7 +971,7 @@ v8.0.1
|
||||
======
|
||||
|
||||
- Fixed an exception when parsing PDFs that are missing a required
|
||||
field. `#325 <https://github.com/jbarlow83/OCRmyPDF/issues/325>`__
|
||||
field. :issue:`325`
|
||||
- pikepdf 1.0.5 is now required, to address some other PDF parsing
|
||||
issues.
|
||||
|
||||
@@ -887,7 +992,7 @@ older versions of certain dependencies.
|
||||
**Other changes**
|
||||
|
||||
- Fixed an unhandled exception when attempting to mask barcodes.
|
||||
`#322 <https://github.com/jbarlow83/OCRmyPDF/issues/322>`__
|
||||
:issue:`322`
|
||||
- It is now possible to use ocrmypdf without pdfminer.six, to support
|
||||
distributions that do not have it or cannot currently use it (e.g.
|
||||
Homebrew). Downstream maintainers should include pdfminer.six if
|
||||
@@ -914,13 +1019,13 @@ v7.4.0
|
||||
- chardet >= 3.0.4 is temporarily listed as required. pdfminer.six
|
||||
depends on it, but the most recent release does not specify this
|
||||
requirement.
|
||||
(`#326 <https://github.com/jbarlow83/OCRmyPDF/issues/326>`__)
|
||||
(:issue:`326`)
|
||||
- python-xmp-toolkit and libexempi are no longer required.
|
||||
- A new Docker image is now being provided for users who wish to access
|
||||
OCRmyPDF over a simple HTTP interface, instead of the command line.
|
||||
- Increase tolerance of PDFs that overflow or underflow the PDF
|
||||
graphics stack.
|
||||
(`#325 <https://github.com/jbarlow83/OCRmyPDF/issues/325>`__)
|
||||
(:issue:`325`)
|
||||
|
||||
v7.3.1
|
||||
======
|
||||
@@ -994,7 +1099,7 @@ v7.3.0
|
||||
v7.2.1
|
||||
======
|
||||
|
||||
- Fix compatibility with an API change in pikepdf 0.3.5.
|
||||
- Fixed compatibility with an API change in pikepdf 0.3.5.
|
||||
- A kludge to support Leptonica versions older than 1.72 in the test
|
||||
suite was dropped. Older versions of Leptonica are likely still
|
||||
compatible. The only impact is that a portion of the test suite will
|
||||
@@ -1031,7 +1136,7 @@ Users who did not install an optional JBIG2 encoder are unaffected.
|
||||
will now attempt to further optimize that image as CCITT or JBIG2,
|
||||
instead of keeping it in the "flate" encoding which is not efficient
|
||||
for 1 bpp images.
|
||||
(`#297 <https://github.com/jbarlow83/OCRmyPDF/issues/297>`__)
|
||||
(:issue:`297`)
|
||||
- Images in PDFs that are used as soft masks (i.e. transparency masks
|
||||
or alpha channels) are now excluded from optimization.
|
||||
- Fixed handling of Tesseract 4.0-rc1 which now accepts invalid
|
||||
@@ -1043,15 +1148,14 @@ v7.1.0
|
||||
- Improve the performance of initial text extraction, which is done to
|
||||
determine if a file contains existing text of some kind or not. On
|
||||
large files, this initial processing is now about 20x times faster.
|
||||
(`#299 <https://github.com/jbarlow83/OCRmyPDF/issues/299>`__)
|
||||
(:issue:`299`)
|
||||
- pikepdf 0.3.3 is now required.
|
||||
- Fixed issue
|
||||
`#231 <https://github.com/jbarlow83/OCRmyPDF/issues/231>`__, a
|
||||
- Fixed :issue:`231`, a
|
||||
problem with JPEG2000 images where image metadata was only available
|
||||
inside the JPEG2000 file.
|
||||
- Fixed some additional Ghostscript 9.25 compatibility issues.
|
||||
- Improved handling of KeyboardInterrupt error messages.
|
||||
(`#301 <https://github.com/jbarlow83/OCRmyPDF/issues/301>`__)
|
||||
(:issue:`301`)
|
||||
- README.md is now served in GitHub markdown instead of
|
||||
reStructuredText.
|
||||
|
||||
@@ -1083,35 +1187,34 @@ v7.0.5
|
||||
v7.0.4
|
||||
======
|
||||
|
||||
- Fix exception thrown when trying to optimize a certain type of PNG
|
||||
- Fixed exception thrown when trying to optimize a certain type of PNG
|
||||
embedded in a PDF with the ``-O2``
|
||||
- Update to pikepdf 0.3.2, to gain support for optimizing some
|
||||
additional image types that were previously excluded from
|
||||
optimization (CMYK and grayscale). Fixes
|
||||
`#285 <https://github.com/jbarlow83/OCRmyPDF/issues/285>`__.
|
||||
:issue:`285`.
|
||||
|
||||
v7.0.3
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#284 <https://github.com/jbarlow83/OCRmyPDF/issues/284>`__, an error
|
||||
- Fixed :issue:`284`, an error
|
||||
when parsing inline images that have are also image masks, by
|
||||
upgrading pikepdf to 0.3.1
|
||||
|
||||
v7.0.2
|
||||
======
|
||||
|
||||
- Fix a regression with ``--rotate-pages`` on pages that already had
|
||||
- Fixed a regression with ``--rotate-pages`` on pages that already had
|
||||
rotations applied.
|
||||
(`#279 <https://github.com/jbarlow83/OCRmyPDF/issues/279>`__)
|
||||
(:issue:`279`)
|
||||
- Improve quality of page rotation in some cases by rasterizing a
|
||||
higher quality preview image.
|
||||
(`#281 <https://github.com/jbarlow83/OCRmyPDF/issues/281>`__)
|
||||
(:issue:`281`)
|
||||
|
||||
v7.0.1
|
||||
======
|
||||
|
||||
- Fix compatibility with img2pdf >= 0.3.0 by rejecting input images
|
||||
- Fixed compatibility with img2pdf >= 0.3.0 by rejecting input images
|
||||
that have an alpha channel
|
||||
- Add forward compatibility for pikepdf 0.3.0 (unrelated to img2pdf)
|
||||
- Various documentation updates for v7.0.0 changes
|
||||
@@ -1214,7 +1317,7 @@ v6.2.4
|
||||
v6.2.3
|
||||
======
|
||||
|
||||
- Fix compatibility with img2pdf >= 0.3.0 by rejecting input images
|
||||
- Fixed compatibility with img2pdf >= 0.3.0 by rejecting input images
|
||||
that have an alpha channel
|
||||
- This version will be included in Ubuntu 18.10
|
||||
|
||||
@@ -1231,9 +1334,8 @@ v6.2.2
|
||||
v6.2.1
|
||||
======
|
||||
|
||||
- Fix recent versions of Tesseract (after 4.0.0-beta1) not being
|
||||
detected as supporting the ``sandwich`` renderer
|
||||
(`#271 <https://github.com/ppjbarlow83/OCRmyPDF/issues/271>`__).
|
||||
- Fixed recent versions of Tesseract (after 4.0.0-beta1) not being
|
||||
detected as supporting the ``sandwich`` renderer (:issue:`271`).
|
||||
|
||||
v6.2.0
|
||||
======
|
||||
@@ -1246,21 +1348,19 @@ v6.2.0
|
||||
- Creation of PDF/A-3 is now supported. However, there is no ability to
|
||||
attach files to PDF/A-3.
|
||||
- Lists more reasons why the file size might grow.
|
||||
- Fix issue
|
||||
`#262 <https://github.com/ppjbarlow83/OCRmyPDF/issues/262>`__,
|
||||
- Fixed :issue:`262`,
|
||||
``--remove-background`` error on PDFs contained colormapped
|
||||
(paletted) images.
|
||||
- Fix another XMP metadata validation issue, in cases where the input
|
||||
- Fixed another XMP metadata validation issue, in cases where the input
|
||||
file's creation date has no timezone and the creation date is not
|
||||
overridden.
|
||||
|
||||
v6.1.5
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#253 <https://github.com/jbarlow83/OCRmyPDF/issues/253>`__, a
|
||||
- Fixed :issue:`253`, a
|
||||
possible division by zero when using the ``hocr`` renderer.
|
||||
- Fix incorrectly formatted ``<xmp:ModifyDate>`` field inside XMP
|
||||
- Fixed incorrectly formatted ``<xmp:ModifyDate>`` field inside XMP
|
||||
metadata for PDF/As. veraPDF flags this as a PDF/A validation
|
||||
failure. The error is caused the timezone and final digit of the
|
||||
seconds of modified time to be omitted, so at worst the modification
|
||||
@@ -1269,7 +1369,7 @@ v6.1.5
|
||||
v6.1.4
|
||||
======
|
||||
|
||||
- Fix issue `#248 <https://github.com/jbarlow83/OCRmyPDF/issues/248>`__
|
||||
- Fixed :issue:`248`
|
||||
``--clean`` argument may remove OCR from left column of text on
|
||||
certain documents. We now set ``--layout none`` to suppress this.
|
||||
- The test cache was updated to reflect the change above.
|
||||
@@ -1294,8 +1394,7 @@ Notes
|
||||
v6.1.3
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#247 <https://github.com/jbarlow83/OCRmyPDF/issues/247>`__,
|
||||
- Fixed :issue:`247`,
|
||||
``/CreationDate`` metadata not copied from input to output.
|
||||
- A warning is now issued when Python 3.5 is used on files with a large
|
||||
page count, as this case is known to regress to single core
|
||||
@@ -1305,13 +1404,13 @@ v6.1.2
|
||||
======
|
||||
|
||||
- Upgrade to PyMuPDF v1.12.5 which includes a more complete fix to
|
||||
`#239 <https://github.com/jbarlow83/OCRmyPDF/issues/239>`__.
|
||||
:issue:`239`.
|
||||
- Add ``defusedxml`` dependency.
|
||||
|
||||
v6.1.1
|
||||
======
|
||||
|
||||
- Fix text being reported as found on all pages if PyMuPDF is not
|
||||
- Fixed text being reported as found on all pages if PyMuPDF is not
|
||||
installed.
|
||||
|
||||
v6.1.0
|
||||
@@ -1322,15 +1421,15 @@ v6.1.0
|
||||
PyMuPDF than the author anticipated. (For version 6.x only) install
|
||||
OCRmyPDF with ``pip install ocrmypdf[fitz]`` to use it to its full
|
||||
potential.
|
||||
- Fix ``FileExistsError`` that could occur if OCR timed out while it
|
||||
- Fixed ``FileExistsError`` that could occur if OCR timed out while it
|
||||
was generating the output file.
|
||||
(`#218 <https://github.com/jbarlow83/OCRmyPDF/issues/218>`__)
|
||||
- Fix table of contents/bookmarks all being redirected to page 1 when
|
||||
(:issue:`218`)
|
||||
- Fixed table of contents/bookmarks all being redirected to page 1 when
|
||||
generating a PDF/A (with PyMuPDF). (Without PyMuPDF the table of
|
||||
contents is removed in PDF/A mode.)
|
||||
- Fix "RuntimeError: invalid key in dict" when table of
|
||||
- Fixed "RuntimeError: invalid key in dict" when table of
|
||||
contents/bookmarks titles contained the character ``)``.
|
||||
(`#239 <https://github.com/jbarlow83/OCRmyPDF/issues/239>`__)
|
||||
(:issue:`239`)
|
||||
- Added a new argument ``--skip-repair`` to skip the initial PDF repair
|
||||
step if the PDF is already well-formed (because another program
|
||||
repaired it).
|
||||
@@ -1357,35 +1456,29 @@ v6.0.0
|
||||
|
||||
- Fixed an issue where OCRmyPDF failed to detect existing text on
|
||||
pages, depending on how the text and fonts were encoded within the
|
||||
PDF. (`#233 <https://github.com/jbarlow83/OCRmyPDF/issues/233>`__,
|
||||
`#232 <https://github.com/jbarlow83/OCRmyPDF/issues/232>`__)
|
||||
PDF. (:issue:`233,232`)
|
||||
- Fixed an issue that caused dramatic inflation of file sizes when
|
||||
``--skip-text --output-type pdf`` was used. OCRmyPDF now removes
|
||||
duplicate resources such as fonts, images and other objects that it
|
||||
generates.
|
||||
(`#237 <https://github.com/jbarlow83/OCRmyPDF/issues/237>`__)
|
||||
generates. (:issue:`237`)
|
||||
- Improved performance of the initial page splitting step. Originally
|
||||
this step was not believed to be expensive and ran in a process.
|
||||
Large file testing revealed it to be a bottleneck, so it is now
|
||||
parallelized. On a 700 page file with quad core machine, this change
|
||||
saves about 2 minutes.
|
||||
(`#234 <https://github.com/jbarlow83/OCRmyPDF/issues/234>`__)
|
||||
saves about 2 minutes. (:issue:`234`)
|
||||
- The test suite now includes a cache that can be used to speed up test
|
||||
runs across platforms. This also does not require computing
|
||||
checksums, so it's faster.
|
||||
(`#217 <https://github.com/jbarlow83/OCRmyPDF/issues/217>`__)
|
||||
checksums, so it's faster. (:issue:`217`)
|
||||
|
||||
v5.7.0
|
||||
======
|
||||
|
||||
- Fixed an issue that caused poor CPU utilization on machines with more
|
||||
than 4 cores when running Tesseract 4. (Related to issue
|
||||
`#217 <https://github.com/jbarlow83/OCRmyPDF/issues/217>`__.)
|
||||
than 4 cores when running Tesseract 4. (Related to :issue:`217`.)
|
||||
- The 'hocr' renderer has been improved. The 'sandwich' and 'tesseract'
|
||||
renderers are still better for most use cases, but 'hocr' may be
|
||||
useful for people who work with the PDF.js renderer in English/ASCII
|
||||
languages.
|
||||
(`#225 <https://github.com/jbarlow83/OCRmyPDF/issues/225>`__)
|
||||
languages. (:issue:`225`)
|
||||
|
||||
- It now formats text in a matter that is easier for certain PDF
|
||||
viewers to select and extract copy and paste text. This should
|
||||
@@ -1413,11 +1506,10 @@ v5.6.2
|
||||
v5.6.1
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#219 <https://github.com/jbarlow83/OCRmyPDF/issues/219>`__: change
|
||||
- Fixed :issue:`219`: change
|
||||
how the final output file is created to avoid triggering permission
|
||||
errors when the output is a special file such as ``/dev/null``
|
||||
- Fix test suite failures due to a qpdf 8.0.0 regression and Python
|
||||
- Fixed test suite failures due to a qpdf 8.0.0 regression and Python
|
||||
3.5's handling of symlink
|
||||
- The "encrypted PDF" error message was different depending on the type
|
||||
of PDF encryption. Now a single clear message appears for all types
|
||||
@@ -1430,8 +1522,7 @@ v5.6.1
|
||||
v5.6.0
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#216 <https://github.com/jbarlow83/OCRmyPDF/issues/216>`__: preserve
|
||||
- Fixed :issue:`216`: preserve
|
||||
"text as curves" PDFs without rasterizing file
|
||||
- Related to the above, messages about rasterizing are more consistent
|
||||
- For consistency versions minor releases will now get the trailing .0
|
||||
@@ -1443,34 +1534,32 @@ v5.5
|
||||
- Add new argument ``--max-image-mpixels``. Pillow 5.0 now raises an
|
||||
exception when images may be decompression bombs. This argument can
|
||||
be used to override the limit Pillow sets.
|
||||
- Fix output page cropped when using the sandwich renderer and OCR is
|
||||
- Fixed output page cropped when using the sandwich renderer and OCR is
|
||||
skipped on a rotated and image-processed page
|
||||
- A warning is now issued when old versions of Ghostscript are used in
|
||||
cases known to cause issues with non-Latin characters
|
||||
- Fix a few parameter validation checks for ``-output-type pdfa-1`` and
|
||||
- Fixed a few parameter validation checks for ``-output-type pdfa-1`` and
|
||||
``pdfa-2``
|
||||
|
||||
v5.4.4
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#181 <https://github.com/jbarlow83/OCRmyPDF/issues/181>`__: fix
|
||||
- Fixed :issue:`181`: fix
|
||||
final merge failure for PDFs with more pages than the system file
|
||||
handle limit (``ulimit -n``)
|
||||
- Fix issue
|
||||
`#200 <https://github.com/jbarlow83/OCRmyPDF/issues/200>`__: an
|
||||
- Fixed :issue:`200`: an
|
||||
uncommon syntax for formatting decimal numbers in a PDF would cause
|
||||
qpdf to issue a warning, which ocrmypdf treated as an error. Now this
|
||||
the warning is relayed.
|
||||
- Fix an issue where intermediate PDFs would be created at version 1.3
|
||||
- Fixed an issue where intermediate PDFs would be created at version 1.3
|
||||
instead of the version of the original file. It's possible but
|
||||
unlikely this had side effects.
|
||||
- A warning is now issued when older versions of qpdf are used since
|
||||
issues like
|
||||
`#200 <https://github.com/jbarlow83/OCRmyPDF/issues/200>`__ cause
|
||||
:issue:`200` cause
|
||||
qpdf to infinite-loop
|
||||
- Address issue
|
||||
`#140 <https://github.com/jbarlow83/OCRmyPDF/issues/140>`__: if
|
||||
:issue:`140`: if
|
||||
Tesseract outputs invalid UTF-8, escape it and print its message
|
||||
instead of aborting with a Unicode error
|
||||
- Adding previously unlisted setup requirement, pytest-runner
|
||||
@@ -1536,13 +1625,13 @@ v5.3
|
||||
forwarded to Tesseract OCR as words and regular expressions
|
||||
respective to use to guide OCR. Supplying a list of subject-domain
|
||||
words should assist Tesseract with resolving words.
|
||||
(`#165 <https://github.com/jbarlow83/OCRmyPDF/issues/165>`__)
|
||||
(:issue:`165`)
|
||||
- Using a non Latin-1 language with the "hocr" renderer now warns about
|
||||
possible OCR quality and recommends workarounds
|
||||
(`#176 <https://github.com/jbarlow83/OCRmyPDF/issues/176>`__)
|
||||
(:issue:`176`)
|
||||
- Output file path added to error message when that location is not
|
||||
writable
|
||||
(`#175 <https://github.com/jbarlow83/OCRmyPDF/issues/175>`__)
|
||||
(:issue:`175`)
|
||||
- Otherwise valid PDFs with leading whitespace at the beginning of the
|
||||
file are now accepted
|
||||
|
||||
@@ -1570,8 +1659,7 @@ v5.1
|
||||
v5.0.1
|
||||
======
|
||||
|
||||
- Fixed issue
|
||||
`#169 <https://github.com/jbarlow83/OCRmyPDF/issues/169>`__,
|
||||
- Fixed :issue:`169`,
|
||||
exception due to failure to create sidecar text files on some
|
||||
versions of Tesseract 3.04, including the jbarlow83/ocrmypdf Docker
|
||||
image
|
||||
@@ -1589,19 +1677,17 @@ v5.0
|
||||
- Add a new feature, ``--sidecar``, which allows creating "sidecar"
|
||||
text files which contain the OCR results in plain text. These OCR
|
||||
text is more reliable than extracting text from PDFs. Closes
|
||||
`#126 <https://github.com/jbarlow83/OCRmyPDF/issues/126>`__.
|
||||
:issue:`126`.
|
||||
|
||||
- New feature: ``--pdfa-image-compression``, which allows overriding
|
||||
Ghostscript's lossy-or-lossless image encoding heuristic and making
|
||||
all images JPEG encoded or lossless encoded as desired. Fixes
|
||||
`#163 <https://github.com/jbarlow83/OCRmyPDF/issues/163>`__.
|
||||
:issue:`163`.
|
||||
|
||||
- Fixed issue
|
||||
`#143 <https://github.com/jbarlow83/OCRmyPDF/issues/143>`__, added
|
||||
- Fixed :issue:`143`, added
|
||||
``--quiet`` to suppress "INFO" messages
|
||||
|
||||
- Fixed issue
|
||||
`#164 <https://github.com/jbarlow83/OCRmyPDF/issues/164>`__, a typo
|
||||
- Fixed :issue:`164`, a typo
|
||||
|
||||
- Removed the command line parameters ``-n`` and ``--just-print`` since
|
||||
they have not worked for some time (reported as Ubuntu bug
|
||||
@@ -1610,17 +1696,14 @@ v5.0
|
||||
v4.5.6
|
||||
======
|
||||
|
||||
- Fixed issue
|
||||
`#156 <https://github.com/jbarlow83/OCRmyPDF/issues/156>`__,
|
||||
- Fixed :issue:`156`,
|
||||
'NoneType' object has no attribute 'getObject' on pages with no
|
||||
optional /Contents record. This should resolve all issues related to
|
||||
pages with no /Contents record.
|
||||
- Fixed issue
|
||||
`#158 <https://github.com/jbarlow83/OCRmyPDF/issues/158>`__, ocrmypdf
|
||||
- Fixed :issue:`158`, ocrmypdf
|
||||
now stops and terminates if Ghostscript fails on an intermediate
|
||||
step, as it is not possible to proceed.
|
||||
- Fixed issue
|
||||
`#160 <https://github.com/jbarlow83/OCRmyPDF/issues/160>`__,
|
||||
- Fixed :issue:`160`,
|
||||
exception thrown on certain invalid arguments instead of error
|
||||
message
|
||||
|
||||
@@ -1628,20 +1711,19 @@ v4.5.5
|
||||
======
|
||||
|
||||
- Automated update of macOS homebrew tap
|
||||
- Fixed issue
|
||||
`#154 <https://github.com/jbarlow83/OCRmyPDF/issues/154>`__, KeyError
|
||||
- Fixed :issue:`154`, KeyError
|
||||
'/Contents' when searching for text on blank pages that have no
|
||||
/Contents record. Note: incomplete fix for this issue.
|
||||
|
||||
v4.5.4
|
||||
======
|
||||
|
||||
- Fix ``--skip-big`` raising an exception if a page contains no images
|
||||
(`#152 <https://github.com/jbarlow83/OCRmyPDF/issues/152>`__) (thanks
|
||||
- Fixed ``--skip-big`` raising an exception if a page contains no images
|
||||
(:issue:`152`) (thanks
|
||||
to @TomRaz)
|
||||
- Fix an issue where pages with no images might trigger "cannot write
|
||||
- Fixed an issue where pages with no images might trigger "cannot write
|
||||
mode P as JPEG"
|
||||
(`#151 <https://github.com/jbarlow83/OCRmyPDF/issues/151>`__)
|
||||
(:issue:`151`)
|
||||
|
||||
v4.5.3
|
||||
======
|
||||
@@ -1660,8 +1742,7 @@ v4.5.3
|
||||
v4.5.2
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#147 <https://github.com/jbarlow83/OCRmyPDF/issues/147>`__.
|
||||
- Fixed :issue:`147`,
|
||||
``--pdf-renderer tess4 --clean`` will produce an oversized page
|
||||
containing the original image in the bottom left corner, due to loss
|
||||
DPI information.
|
||||
@@ -1671,8 +1752,7 @@ v4.5.2
|
||||
v4.5.1
|
||||
======
|
||||
|
||||
- Fix issue
|
||||
`#137 <https://github.com/jbarlow83/OCRmyPDF/issues/137>`__,
|
||||
- Fixed :issue:`137`,
|
||||
proportions of images with a non-square pixel aspect ratio would be
|
||||
distorted in output for ``--force-ocr`` and some other combinations
|
||||
of flags
|
||||
@@ -1681,7 +1761,7 @@ v4.5
|
||||
====
|
||||
|
||||
- PDFs containing "Form XObjects" are now supported (issue
|
||||
`#134 <https://github.com/jbarlow83/OCRmyPDF/issues/134>`__; PDF
|
||||
:issue:`134`; PDF
|
||||
reference manual 8.10), and images they contain are taken into
|
||||
account when determining the resolution for rasterizing
|
||||
- The Tesseract 4 Docker image no longer includes all languages,
|
||||
@@ -1810,7 +1890,7 @@ v4.2.5
|
||||
======
|
||||
|
||||
- Fixed an issue
|
||||
(`#100 <https://github.com/jbarlow83/OCRmyPDF/issues/100>`__) with
|
||||
(:issue:`100`) with
|
||||
PDFs that omit the optional /BitsPerComponent parameter on images
|
||||
- Removed non-free file milk.pdf
|
||||
|
||||
@@ -1818,7 +1898,7 @@ v4.2.4
|
||||
======
|
||||
|
||||
- Fixed an error
|
||||
(`#90 <https://github.com/jbarlow83/OCRmyPDF/issues/90>`__) caused by
|
||||
(:issue:`90`) caused by
|
||||
PDFs that use stencil masks properly
|
||||
- Fixed handling of PDFs that try to draw images or stencil masks
|
||||
without properly setting up the graphics state (such images are now
|
||||
@@ -1856,7 +1936,7 @@ v4.2
|
||||
|
||||
- ocrmypdf will now try to convert single image files to PDFs if they
|
||||
are provided as input
|
||||
(`#15 <https://github.com/jbarlow83/OCRmyPDF/issues/15>`__)
|
||||
(:issue:`15`)
|
||||
|
||||
- This is a basic convenience feature. It only supports a single
|
||||
image and always makes the image fill the whole page.
|
||||
@@ -1884,11 +1964,11 @@ v4.2
|
||||
- supports reinterpreting PDFs where text was rendered as curves for
|
||||
printing, and text needs to be recovered
|
||||
- fixes issue
|
||||
`#82 <https://github.com/jbarlow83/OCRmyPDF/issues/82>`__
|
||||
:issue:`82`
|
||||
|
||||
- Fixes an issue where, with certain settings, monochrome images in
|
||||
PDFs would be converted to 8-bit grayscale, increasing file size
|
||||
(`#79 <https://github.com/jbarlow83/OCRmyPDF/issues/79>`__)
|
||||
(:issue:`79`)
|
||||
- Support for Ubuntu 12.04 LTS "precise" has been dropped in favor of
|
||||
(roughly) Ubuntu 14.04 LTS "trusty"
|
||||
|
||||
@@ -1916,7 +1996,7 @@ v4.1.3
|
||||
|
||||
- More helpful error message for PDFs with version 4 security handler
|
||||
- Update usage instructions for Windows/Docker users
|
||||
- Fix order of operations for matrix multiplication (no effect on most
|
||||
- Fixed order of operations for matrix multiplication (no effect on most
|
||||
users)
|
||||
- Add a few leptonica wrapper functions (no effect on most users)
|
||||
|
||||
@@ -2009,7 +2089,7 @@ New features
|
||||
dominant orientation of detectable text. This feature is fairly
|
||||
reliable but some false positives occur especially if there is not
|
||||
much text to work with.
|
||||
(`#4 <https://github.com/jbarlow83/OCRmyPDF/issues/4>`__)
|
||||
(:issue:`4`)
|
||||
- Deskewing is now performed using Leptonica instead of unpaper.
|
||||
Leptonica is faster and more reliable at image deskewing than
|
||||
unpaper.
|
||||
@@ -2022,13 +2102,13 @@ Fixes
|
||||
- Fixed an issue where lossless reconstruction could misalign the
|
||||
graphics layer with respect to text layer if the page had been
|
||||
cropped such that its origin is not (0, 0)
|
||||
(`#49 <https://github.com/jbarlow83/OCRmyPDF/issues/49>`__)
|
||||
(:issue:`49`)
|
||||
|
||||
Changes
|
||||
|
||||
- Logging output is now much easier to read
|
||||
- ``--deskew`` is now performed by Leptonica instead of unpaper
|
||||
(`#25 <https://github.com/jbarlow83/OCRmyPDF/issues/25>`__)
|
||||
(:issue:`25`)
|
||||
- libffi is now required
|
||||
- Some changes were made to the Docker and Travis build environments to
|
||||
support libffi
|
||||
@@ -2043,7 +2123,7 @@ v3.2.1
|
||||
|
||||
Changes
|
||||
|
||||
- Fixed issue `#47 <https://github.com/jbarlow83/OCRmyPDF/issues/47>`__
|
||||
- Fixed :issue:`47`
|
||||
"convert() got and unexpected keyword argument 'dpi'" by upgrading to
|
||||
img2pdf 0.2
|
||||
- Tweaked the Dockerfiles
|
||||
@@ -2088,8 +2168,7 @@ Changes
|
||||
- Python 3.5 and macOS El Capitan are now supported platforms - no
|
||||
changes were needed to implement support
|
||||
- Improved some error messages related to missing input files
|
||||
- Fixed issue `#20 <https://github.com/jbarlow83/OCRmyPDF/issues/20>`__
|
||||
- uppercase .PDF extension not accepted
|
||||
- Fixed :issue:`20`: uppercase .PDF extension not accepted
|
||||
- Fixed an issue where OCRmyPDF failed to text that certain pages
|
||||
contained previously OCR'ed text, such as OCR text produced by
|
||||
Tesseract 3.04
|
||||
@@ -2166,19 +2245,19 @@ Release candidates^
|
||||
|
||||
- rc9:
|
||||
|
||||
- fix issue
|
||||
`#118 <https://github.com/jbarlow83/OCRmyPDF/issues/118>`__:
|
||||
- Fix
|
||||
:issue:`118`:
|
||||
report error if ghostscript iccprofiles are missing
|
||||
- fixed another issue related to
|
||||
`#111 <https://github.com/jbarlow83/OCRmyPDF/issues/111>`__: PDF
|
||||
:issue:`111`: PDF
|
||||
rasterized to palette file
|
||||
- add support image files with a palette
|
||||
- don't try to validate PDF file after an exception occurs
|
||||
|
||||
- rc8:
|
||||
|
||||
- fix issue
|
||||
`#111 <https://github.com/jbarlow83/OCRmyPDF/issues/111>`__:
|
||||
- Fix
|
||||
:issue:`111`:
|
||||
exception thrown if PDF is missing DocumentInfo dictionary
|
||||
|
||||
- rc7:
|
||||
|
||||
+15
-21
@@ -24,45 +24,39 @@
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
import ocrmypdf
|
||||
|
||||
# pylint: disable=logging-format-interpolation
|
||||
# pylint: disable=logging-not-lazy
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
print(script_dir + '/batch.py: Start')
|
||||
script_dir = Path(__file__).parent
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
start_dir = sys.argv[1]
|
||||
start_dir = Path(sys.argv[1])
|
||||
else:
|
||||
start_dir = '.'
|
||||
start_dir = Path('.')
|
||||
|
||||
if len(sys.argv) > 2:
|
||||
log_file = sys.argv[2]
|
||||
log_file = Path(sys.argv[2])
|
||||
else:
|
||||
log_file = script_dir + '/ocr-tree.log'
|
||||
log_file = script_dir.with_name('ocr-tree.log')
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s %(message)s',
|
||||
filename=log_file,
|
||||
filemode='w',
|
||||
filemode='a',
|
||||
)
|
||||
|
||||
ocrmypdf.configure_logging(ocrmypdf.Verbosity.default)
|
||||
|
||||
for dir_name, subdirs, file_list in os.walk(start_dir):
|
||||
logging.info(dir_name + '\n')
|
||||
os.chdir(dir_name)
|
||||
for filename in file_list:
|
||||
file_ext = os.path.splitext(filename)[1]
|
||||
if file_ext == '.pdf':
|
||||
full_path = dir_name + '/' + filename
|
||||
print(full_path)
|
||||
result = ocrmypdf.ocr(filename, filename, deskew=True)
|
||||
if result == ocrmypdf.ExitCode.already_done_ocr:
|
||||
print("Skipped document because it already contained text")
|
||||
elif result == ocrmypdf.ExitCode.ok:
|
||||
print("OCR complete")
|
||||
logging.info(result)
|
||||
for filename in start_dir.glob("**/*.py"):
|
||||
logging.info(f"Processing {filename}")
|
||||
result = ocrmypdf.ocr(filename, filename, deskew=True)
|
||||
if result == ocrmypdf.ExitCode.already_done_ocr:
|
||||
logging.error("Skipped document because it already contained text")
|
||||
elif result == ocrmypdf.ExitCode.ok:
|
||||
logging.info("OCR complete")
|
||||
logging.info(result)
|
||||
|
||||
@@ -54,6 +54,7 @@ function __fish_ocrmypdf_output_type
|
||||
echo -e "pdfa-1\t"(_ "output a PDF/A-1b")
|
||||
echo -e "pdfa-2\t"(_ "output a PDF/A-2b")
|
||||
echo -e "pdfa-3\t"(_ "output a PDF/A-3b")
|
||||
echo -e "none\t"(_ "do not produce an output PDF (for example, if you only care about --sidecar)")
|
||||
end
|
||||
complete -c ocrmypdf -x -l output-type -a '(__fish_ocrmypdf_output_type)' -d "select PDF output options"
|
||||
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ if len(sys.argv) > 1:
|
||||
else:
|
||||
start_dir = '.'
|
||||
|
||||
for dir_name, subdirs, file_list in os.walk(start_dir):
|
||||
for dir_name, _subdirs, file_list in os.walk(start_dir):
|
||||
logging.info(dir_name)
|
||||
os.chdir(dir_name)
|
||||
for filename in file_list:
|
||||
|
||||
+10
-4
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (C) 2019 Ian Alexander: https://github.com/ianalexander
|
||||
# Copyright (C) 2020 James R Barlow: https://github.com/jbarlow83
|
||||
#
|
||||
@@ -36,14 +37,19 @@ import ocrmypdf
|
||||
|
||||
# pylint: disable=logging-format-interpolation
|
||||
|
||||
|
||||
def getenv_bool(name: str, default: str = 'False'):
|
||||
return os.getenv(name, default).lower() in ('true', 'yes', 'y', '1')
|
||||
|
||||
|
||||
INPUT_DIRECTORY = os.getenv('OCR_INPUT_DIRECTORY', '/input')
|
||||
OUTPUT_DIRECTORY = os.getenv('OCR_OUTPUT_DIRECTORY', '/output')
|
||||
OUTPUT_DIRECTORY_YEAR_MONTH = bool(os.getenv('OCR_OUTPUT_DIRECTORY_YEAR_MONTH', ''))
|
||||
ON_SUCCESS_DELETE = bool(os.getenv('OCR_ON_SUCCESS_DELETE', ''))
|
||||
DESKEW = bool(os.getenv('OCR_DESKEW', ''))
|
||||
OUTPUT_DIRECTORY_YEAR_MONTH = getenv_bool('OCR_OUTPUT_DIRECTORY_YEAR_MONTH')
|
||||
ON_SUCCESS_DELETE = getenv_bool('OCR_ON_SUCCESS_DELETE')
|
||||
DESKEW = getenv_bool('OCR_DESKEW')
|
||||
OCR_JSON_SETTINGS = json.loads(os.getenv('OCR_JSON_SETTINGS', '{}'))
|
||||
POLL_NEW_FILE_SECONDS = int(os.getenv('OCR_POLL_NEW_FILE_SECONDS', '1'))
|
||||
USE_POLLING = bool(os.getenv('OCR_USE_POLLING', ''))
|
||||
USE_POLLING = getenv_bool('OCR_USE_POLLING')
|
||||
LOGLEVEL = os.getenv('OCR_LOGLEVEL', 'INFO')
|
||||
PATTERNS = ['*.pdf', '*.PDF']
|
||||
|
||||
|
||||
+3
-11
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
# webservice.py wrapper for OCRmyPDF
|
||||
# Copyright (C) 2019 James R. Barlow: github.com/jbarlow83
|
||||
#
|
||||
@@ -28,16 +29,7 @@ import shlex
|
||||
from subprocess import PIPE, run
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
from flask import (
|
||||
Flask,
|
||||
Response,
|
||||
abort,
|
||||
flash,
|
||||
redirect,
|
||||
request,
|
||||
send_from_directory,
|
||||
url_for,
|
||||
)
|
||||
from flask import Flask, Response, request, send_from_directory
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
app = Flask(__name__)
|
||||
@@ -45,7 +37,7 @@ app.secret_key = "secret"
|
||||
app.config['MAX_CONTENT_LENGTH'] = 50_000_000
|
||||
app.config.from_envvar("OCRMYPDF_WEBSERVICE_SETTINGS", silent=True)
|
||||
|
||||
ALLOWED_EXTENSIONS = set(["pdf"])
|
||||
ALLOWED_EXTENSIONS = {"pdf"}
|
||||
|
||||
|
||||
def allowed_file(filename):
|
||||
|
||||
+50
-1
@@ -3,11 +3,14 @@ requires = [
|
||||
"setuptools >= 30.3.0",
|
||||
"wheel",
|
||||
"cffi",
|
||||
"setuptools_scm",
|
||||
"setuptools_scm[toml] >= 3.4",
|
||||
"setuptools_scm_git_archive"
|
||||
]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[tool.setuptools_scm]
|
||||
version_scheme = "post-release"
|
||||
|
||||
[tool.black]
|
||||
line-length = 88
|
||||
target-version = ["py36", "py37", "py38"]
|
||||
@@ -31,3 +34,49 @@ exclude = '''
|
||||
| src/ocrmypdf/lib/_leptonica.py
|
||||
)/
|
||||
'''
|
||||
|
||||
[tool.coverage.run]
|
||||
branch = true
|
||||
parallel = true
|
||||
concurrency = ["multiprocessing"]
|
||||
|
||||
[tool.coverage.paths]
|
||||
source = ["src/ocrmypdf"]
|
||||
|
||||
[tool.coverage.report]
|
||||
# Regexes for lines to exclude from consideration
|
||||
exclude_lines = [
|
||||
# Have to re-enable the standard pragma
|
||||
"pragma: no cover",
|
||||
|
||||
# Don't complain if tests don't hit defensive assertion code:
|
||||
"raise AssertionError",
|
||||
"raise NotImplementedError",
|
||||
|
||||
# Don't complain if non-runnable code isn't run:
|
||||
"if 0:",
|
||||
"if False:",
|
||||
"if __name__ == .__main__.:",
|
||||
"if TYPE_CHECKING:"
|
||||
]
|
||||
|
||||
[tool.isort]
|
||||
profile = "black"
|
||||
known_first_party = "ocrmypdf"
|
||||
known_third_party = ["PIL", "_cffi_backend", "cffi", "flask", "img2pdf", "ocrmypdf", "pdfminer", "pikepdf", "pkg_resources", "pluggy", "pytest", "reportlab", "setuptools", "sphinx_rtd_theme", "tqdm", "watchdog", "werkzeug"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
minversion = "6.0"
|
||||
norecursedirs = ["lib", ".pc", ".git", "venv", "output", "cache", "resources"]
|
||||
testpaths = ["tests"]
|
||||
addopts = "-n auto"
|
||||
markers = ["slow"]
|
||||
filterwarnings = ["ignore:.*XMLParser.*:DeprecationWarning"]
|
||||
|
||||
[tool.mypy]
|
||||
|
||||
[[tool.mypy.overrides]]
|
||||
module = [
|
||||
'pluggy', 'tqdm', 'coloredlogs', 'img2pdf', 'cffi', '_cffi_backend', 'pdfminer.*', 'reportlab.*'
|
||||
]
|
||||
ignore_missing_imports = true
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
# requirements.txt can be used to replicate the developer's build environment
|
||||
# setup.py lists a separate set of requirements that are looser to simplify
|
||||
# installation
|
||||
# Deprecated and not maintained; use "pip install ocrmypdf" instead
|
||||
cffi == 1.14.5
|
||||
coloredlogs == 15.0 # technically optional
|
||||
img2pdf == 0.4.0
|
||||
pdfminer.six == 20201018
|
||||
pikepdf == 2.10.0
|
||||
pluggy == 0.13.1
|
||||
Pillow == 8.1.2
|
||||
Pillow == 8.3.2
|
||||
reportlab == 3.5.66
|
||||
tqdm == 4.59.0
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Deprecated and not maintained; use "pip install ocrmypdf[test]" instead
|
||||
pytest >= 6.0.0
|
||||
pytest-xdist >= 2.2.0
|
||||
pytest-cov >= 2.11.1
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
# Deprecated and not maintained; use "pip install ocrmypdf[watcher]" instead
|
||||
watchdog == 1.0.2
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
# Deprecated and not maintained; use "pip install ocrmypdf[webservice]" instead
|
||||
Flask >= 1, < 2
|
||||
|
||||
@@ -1,56 +1,115 @@
|
||||
[metadata]
|
||||
name = ocrmypdf
|
||||
description = OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched
|
||||
long_description = file: README.md
|
||||
long_description_content_type = text/markdown
|
||||
url = https://github.com/jbarlow83/OCRmyPDF
|
||||
author = James R. Barlow
|
||||
author_email = james@purplerock.ca
|
||||
license = MPL-2.0
|
||||
license_file = LICENSE
|
||||
license_files =
|
||||
LICENSE
|
||||
classifiers =
|
||||
Development Status :: 5 - Production/Stable
|
||||
Environment :: Console
|
||||
Intended Audience :: End Users/Desktop
|
||||
Intended Audience :: Science/Research
|
||||
Intended Audience :: System Administrators
|
||||
License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
||||
Operating System :: MacOS :: MacOS X
|
||||
Operating System :: Microsoft :: Windows :: Windows 10
|
||||
Operating System :: POSIX
|
||||
Operating System :: POSIX :: BSD
|
||||
Operating System :: POSIX :: Linux
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3 :: Only
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3.8
|
||||
Programming Language :: Python :: 3.9
|
||||
Topic :: Scientific/Engineering :: Image Recognition
|
||||
Topic :: Text Processing :: Indexing
|
||||
Topic :: Text Processing :: Linguistic
|
||||
keywords =
|
||||
PDF
|
||||
OCR
|
||||
optical character recognition
|
||||
PDF/A
|
||||
scanning
|
||||
project_urls =
|
||||
Documentation = https://ocrmypdf.readthedocs.io/
|
||||
Source = https://github.com/jbarlow83/ocrmypdf
|
||||
Tracker = https://github.com/jbarlow83/ocrmypdf/issues
|
||||
|
||||
[options]
|
||||
packages = find:
|
||||
install_requires =
|
||||
Pillow>=8.2.0
|
||||
cffi>=1.9.1 # must be a setup and install requirement
|
||||
coloredlogs>=14.0 # strictly optional
|
||||
img2pdf>=0.3.0,<0.5 # pure Python
|
||||
importlib-metadata>=4;python_version<'3.8' # until Python 3.8
|
||||
importlib-resources>=5;python_version<'3.9' # until Python 3.9
|
||||
pdfminer.six!=20200720,>=20191110,<=20211012
|
||||
pikepdf>=2.10.0
|
||||
pikepdf<3;implementation_name=="pypy" and python_version=='3.6'
|
||||
pluggy>=0.13.0,<2
|
||||
reportlab>=3.5.66
|
||||
tqdm>=4
|
||||
python_requires = >=3.6
|
||||
include_package_data = True
|
||||
package_dir =
|
||||
=src
|
||||
platforms = any
|
||||
setup_requires =
|
||||
cffi>=1.9.1 # to build the leptonica module
|
||||
setuptools_scm
|
||||
setuptools_scm_git_archive
|
||||
zip_safe = False
|
||||
|
||||
[options.packages.find]
|
||||
where = src
|
||||
|
||||
[options.entry_points]
|
||||
console_scripts =
|
||||
ocrmypdf = ocrmypdf.__main__:run
|
||||
|
||||
[options.extras_require]
|
||||
docs =
|
||||
sphinx
|
||||
sphinx-issues
|
||||
sphinx-rtd-theme
|
||||
extended_test =
|
||||
PyMuPDF==1.13.4
|
||||
test =
|
||||
coverage[toml]>=5
|
||||
pytest>=6.0.0
|
||||
pytest-cov>=2.11.1
|
||||
pytest-xdist>=2.2.0
|
||||
python-xmp-toolkit==2.0.1 # also requires apt-get install libexempi3
|
||||
watcher =
|
||||
watchdog>=1.0.2,<3
|
||||
webservice =
|
||||
Flask>=1,<3
|
||||
|
||||
[options.package_data]
|
||||
ocrmypdf =
|
||||
data/sRGB.icc
|
||||
py.typed
|
||||
|
||||
[bdist_wheel]
|
||||
python-tag = py36
|
||||
|
||||
[aliases]
|
||||
test=pytest
|
||||
test = pytest
|
||||
|
||||
[check-manifest]
|
||||
ignore =
|
||||
.github
|
||||
.github
|
||||
|
||||
[tool:pytest]
|
||||
norecursedirs = lib .pc .git output cache resources
|
||||
testpaths = tests
|
||||
filterwarnings =
|
||||
ignore:.*XMLParser.*:DeprecationWarning
|
||||
markers =
|
||||
slow
|
||||
addopts =
|
||||
-n auto
|
||||
|
||||
[isort]
|
||||
multi_line_output=3
|
||||
include_trailing_comma=True
|
||||
force_grid_wrap=0
|
||||
use_parentheses=True
|
||||
line_length=88
|
||||
known_first_party = ocrmypdf
|
||||
known_third_party = PIL,_cffi_backend,cffi,flask,img2pdf,pdfminer,pikepdf,pkg_resources,pluggy,pytest,reportlab,setuptools,sphinx_rtd_theme,tqdm,watchdog,werkzeug
|
||||
|
||||
[metadata]
|
||||
license_file = LICENSE
|
||||
|
||||
[coverage:paths]
|
||||
source =
|
||||
src/ocrmypdf
|
||||
|
||||
[coverage:run]
|
||||
branch = true
|
||||
parallel = true
|
||||
concurrency = multiprocessing
|
||||
|
||||
[coverage:report]
|
||||
# Regexes for lines to exclude from consideration
|
||||
exclude_lines =
|
||||
# Have to re-enable the standard pragma
|
||||
pragma: no cover
|
||||
|
||||
# Don't complain if tests don't hit defensive assertion code:
|
||||
raise AssertionError
|
||||
raise NotImplementedError
|
||||
|
||||
# Don't complain if non-runnable code isn't run:
|
||||
if 0:
|
||||
if False:
|
||||
if __name__ == .__main__.:
|
||||
if TYPE_CHECKING:
|
||||
[flake8]
|
||||
ignore = D203,F401,W503,E501,E203,F841
|
||||
exclude = .git,__pycache__,docs/conf.py,build,dist,.venv,.venvpp,.eggs,tmp,src/ocrmypdf/lib/
|
||||
max-complexity = 10
|
||||
max-line-length = 100
|
||||
|
||||
@@ -1,62 +1,14 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2015 James R. Barlow: github.com/jbarlow83
|
||||
# © 2021 James R. Barlow: github.com/jbarlow83
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
import sys
|
||||
|
||||
from setuptools import find_packages, setup
|
||||
|
||||
if sys.version_info < (3, 6):
|
||||
print("Python 3.6 or newer is required", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
tests_require = open('requirements/test.txt', encoding='utf-8').read().splitlines()
|
||||
|
||||
|
||||
def readme():
|
||||
with open('README.md', encoding='utf-8') as f:
|
||||
return f.read()
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
# Minimal setup to support older setuptools/setuptools_scm
|
||||
setup(
|
||||
name='ocrmypdf',
|
||||
description='OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched',
|
||||
long_description=readme(),
|
||||
long_description_content_type='text/markdown',
|
||||
url='https://github.com/jbarlow83/OCRmyPDF',
|
||||
author='James R. Barlow',
|
||||
author_email='james@purplerock.ca',
|
||||
packages=find_packages('src', exclude=["tests", "tests.*"]),
|
||||
package_dir={'': 'src'},
|
||||
keywords=['PDF', 'OCR', 'optical character recognition', 'PDF/A', 'scanning'],
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3.6",
|
||||
"Programming Language :: Python :: 3.7",
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Environment :: Console",
|
||||
"Intended Audience :: End Users/Desktop",
|
||||
"Intended Audience :: Science/Research",
|
||||
"Intended Audience :: System Administrators",
|
||||
"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
|
||||
"Operating System :: MacOS :: MacOS X",
|
||||
"Operating System :: Microsoft :: Windows :: Windows 10",
|
||||
"Operating System :: POSIX",
|
||||
"Operating System :: POSIX :: BSD",
|
||||
"Operating System :: POSIX :: Linux",
|
||||
"Topic :: Scientific/Engineering :: Image Recognition",
|
||||
"Topic :: Text Processing :: Indexing",
|
||||
"Topic :: Text Processing :: Linguistic",
|
||||
],
|
||||
python_requires=' >= 3.6',
|
||||
setup_requires=[ # can be removed whenever we can drop pip 9 support
|
||||
'cffi >= 1.9.1', # to build the leptonica module
|
||||
'setuptools_scm', # so that version will work
|
||||
@@ -64,26 +16,4 @@ setup(
|
||||
],
|
||||
use_scm_version={'version_scheme': 'post-release'},
|
||||
cffi_modules=['src/ocrmypdf/lib/compile_leptonica.py:ffibuilder'],
|
||||
install_requires=[
|
||||
'cffi >= 1.9.1', # must be a setup and install requirement
|
||||
'coloredlogs >= 14.0', # strictly optional
|
||||
'img2pdf >= 0.3.0, < 0.5', # pure Python, so track HEAD closely
|
||||
'pdfminer.six >= 20191110, != 20200720, <= 20201018',
|
||||
"pikepdf >= 2.10.0",
|
||||
'Pillow >= 8.1.2',
|
||||
'pluggy >= 0.13.0, < 1.0',
|
||||
'reportlab >= 3.5.66',
|
||||
'setuptools',
|
||||
'tqdm >= 4',
|
||||
],
|
||||
tests_require=tests_require,
|
||||
entry_points={'console_scripts': ['ocrmypdf = ocrmypdf.__main__:run']},
|
||||
package_data={'ocrmypdf': ['data/sRGB.icc', 'py.typed']},
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
project_urls={
|
||||
'Documentation': 'https://ocrmypdf.readthedocs.io/',
|
||||
'Source': 'https://github.com/jbarlow83/ocrmypdf',
|
||||
'Tracker': 'https://github.com/jbarlow83/ocrmypdf/issues',
|
||||
},
|
||||
)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
- Search for deprecation: search all files for deprec*, etc.
|
||||
|
||||
- Check requirements/*
|
||||
- Check requirements in setup.cfg
|
||||
|
||||
- Delete `tests/cache`, do `pytest --runslow`, and update cache.
|
||||
|
||||
|
||||
@@ -56,11 +56,12 @@ class TesseractLoggerAdapter(logging.LoggerAdapter):
|
||||
|
||||
|
||||
class TesseractVersion(StrictVersion):
|
||||
|
||||
version_re = re.compile(
|
||||
r'''
|
||||
^(\d+) \. (\d+) (\. (\d+))? # groups: 1/major, 2/minor, 3/[skip], 4/patch
|
||||
[-]? # optional hyphen separator
|
||||
(?:(alpha|beta|rc|dev)[.\-\ ]?(\d+)?)? # 5/prerelease, 6/prerelease_num
|
||||
(?:(alpha|beta|rc|dev)?[.\-\ ]?(\d+)?)? # 5/prerelease, 6/prerelease_num
|
||||
(?:-(\d+)-g[0-9a-f]+)? # untagged git version
|
||||
$
|
||||
''',
|
||||
@@ -116,7 +117,7 @@ def get_languages():
|
||||
if line.startswith('Error'):
|
||||
raise MissingDependencyError(lang_error(output))
|
||||
_header, *rest = output.splitlines()
|
||||
return set(lang.strip() for lang in rest)
|
||||
return {lang.strip() for lang in rest}
|
||||
|
||||
|
||||
def tess_base_args(langs: List[str], engine_mode: Optional[int]) -> List[str]:
|
||||
@@ -249,7 +250,8 @@ def generate_hocr(
|
||||
|
||||
# Reminder: test suite tesseract test plugins will break after any changes
|
||||
# to the number of order parameters here
|
||||
args_tesseract.extend([input_file, prefix, 'hocr', 'txt'] + tessconfig)
|
||||
args_tesseract.extend([os.fspath(input_file), os.fspath(prefix), 'hocr', 'txt'])
|
||||
args_tesseract.extend(tessconfig)
|
||||
try:
|
||||
p = run(args_tesseract, stdout=PIPE, stderr=STDOUT, timeout=timeout, check=True)
|
||||
stdout = p.stdout
|
||||
@@ -323,7 +325,8 @@ def generate_pdf(
|
||||
# Reminder: test suite tesseract test plugins might break after any changes
|
||||
# to the number of order parameters here
|
||||
|
||||
args_tesseract.extend([input_file, prefix, 'pdf', 'txt'] + tessconfig)
|
||||
args_tesseract.extend([os.fspath(input_file), os.fspath(prefix), 'pdf', 'txt'])
|
||||
args_tesseract.extend(tessconfig)
|
||||
try:
|
||||
p = run(args_tesseract, stdout=PIPE, stderr=STDOUT, timeout=timeout, check=True)
|
||||
stdout = p.stdout
|
||||
|
||||
@@ -45,7 +45,7 @@ def _setup_unpaper_io(tmpdir: Path, input_file: Path) -> Tuple[Path, Path]:
|
||||
im = im.convert(mode='1')
|
||||
else:
|
||||
im = im.convert(mode='RGB')
|
||||
except IOError as e:
|
||||
except OSError as e:
|
||||
raise MissingDependencyError(
|
||||
"Could not convert image with type " + im.mode
|
||||
) from e
|
||||
@@ -96,12 +96,12 @@ def run(
|
||||
try:
|
||||
with Image.open(output_pnm) as imout:
|
||||
imout.save(output_file, dpi=(dpi, dpi))
|
||||
except (FileNotFoundError, OSError):
|
||||
except OSError as e:
|
||||
raise SubprocessOutputError(
|
||||
"unpaper: failed to produce the expected output file. "
|
||||
+ " Called with: "
|
||||
+ str(args_unpaper)
|
||||
) from None
|
||||
) from e
|
||||
|
||||
|
||||
def validate_custom_args(args: str) -> List[str]:
|
||||
|
||||
+45
-42
@@ -11,8 +11,19 @@ from contextlib import suppress
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import pikepdf
|
||||
from pikepdf.objects import Dictionary, Name
|
||||
from pikepdf import (
|
||||
Dictionary,
|
||||
Name,
|
||||
Object,
|
||||
Operator,
|
||||
Page,
|
||||
Pdf,
|
||||
PdfError,
|
||||
PdfMatrix,
|
||||
Stream,
|
||||
parse_content_stream,
|
||||
unparse_content_stream,
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
MAX_REPLACE_PAGES = 100
|
||||
@@ -47,43 +58,28 @@ def strip_invisible_text(pdf, page):
|
||||
render_mode = 0
|
||||
text_objects = []
|
||||
|
||||
page.page_contents_coalesce()
|
||||
for operands, operator in pikepdf.parse_content_stream(page, ''):
|
||||
rich_page = Page(page)
|
||||
rich_page.contents_coalesce()
|
||||
for operands, operator in parse_content_stream(page, ''):
|
||||
if not in_text_obj:
|
||||
if operator == pikepdf.Operator('BT'):
|
||||
if operator == Operator('BT'):
|
||||
in_text_obj = True
|
||||
render_mode = 0
|
||||
text_objects.append((operands, operator))
|
||||
else:
|
||||
stream.append((operands, operator))
|
||||
else:
|
||||
if operator == pikepdf.Operator('Tr'):
|
||||
if operator == Operator('Tr'):
|
||||
render_mode = operands[0]
|
||||
text_objects.append((operands, operator))
|
||||
if operator == pikepdf.Operator('ET'):
|
||||
if operator == Operator('ET'):
|
||||
in_text_obj = False
|
||||
if render_mode != 3:
|
||||
stream.extend(text_objects)
|
||||
text_objects.clear()
|
||||
|
||||
def convert(op):
|
||||
try:
|
||||
return op.unparse()
|
||||
except AttributeError:
|
||||
return str(op).encode('ascii')
|
||||
|
||||
lines = []
|
||||
|
||||
for operands, operator in stream:
|
||||
if operator == pikepdf.Operator('INLINE IMAGE'):
|
||||
iim = operands[0]
|
||||
line = iim.unparse()
|
||||
else:
|
||||
line = b' '.join(convert(op) for op in operands) + b' ' + operator.unparse()
|
||||
lines.append(line)
|
||||
|
||||
content_stream = b'\n'.join(lines)
|
||||
page.Contents = pikepdf.Stream(pdf, content_stream)
|
||||
content_stream = unparse_content_stream(stream)
|
||||
page.Contents = Stream(pdf, content_stream)
|
||||
|
||||
|
||||
class OcrGrafter:
|
||||
@@ -91,14 +87,14 @@ class OcrGrafter:
|
||||
self.context = context
|
||||
self.path_base = context.origin
|
||||
|
||||
self.pdf_base = pikepdf.open(self.path_base)
|
||||
self.pdf_base = Pdf.open(self.path_base)
|
||||
self.font, self.font_key = None, None
|
||||
|
||||
self.pdfinfo = context.pdfinfo
|
||||
self.output_file = context.get_path('graft_layers.pdf')
|
||||
|
||||
self.procset = self.pdf_base.make_indirect(
|
||||
pikepdf.Object.parse(b'[ /PDF /Text /ImageB /ImageC /ImageI ]')
|
||||
Object.parse(b'[ /PDF /Text /ImageB /ImageC /ImageI ]')
|
||||
)
|
||||
|
||||
self.emplacements = 1
|
||||
@@ -122,7 +118,7 @@ class OcrGrafter:
|
||||
# We are updating the old page with a rasterized PDF of the new
|
||||
# page (without changing objgen, to preserve references)
|
||||
log.debug("Emplacement update")
|
||||
with pikepdf.open(image) as pdf_image:
|
||||
with Pdf.open(path_image) as pdf_image:
|
||||
self.emplacements += 1
|
||||
foreign_image_page = pdf_image.pages[0]
|
||||
self.pdf_base.pages.append(foreign_image_page)
|
||||
@@ -195,7 +191,7 @@ class OcrGrafter:
|
||||
self.pdf_base.save(next_file)
|
||||
self.pdf_base.close()
|
||||
|
||||
self.pdf_base = pikepdf.open(next_file)
|
||||
self.pdf_base = Pdf.open(next_file)
|
||||
self.procset = self.pdf_base.pages[0].Resources.ProcSet
|
||||
self.font, self.font_key = None, None # Ensure we reacquire this information
|
||||
self.interim_count += 1
|
||||
@@ -211,7 +207,7 @@ class OcrGrafter:
|
||||
font, font_key = None, None
|
||||
possible_font_names = ('/f-0-0', '/F1')
|
||||
try:
|
||||
with pikepdf.open(text) as pdf_text:
|
||||
with Pdf.open(text) as pdf_text:
|
||||
try:
|
||||
pdf_text_fonts = pdf_text.pages[0].Resources.get('/Font', {})
|
||||
except (AttributeError, IndexError, KeyError):
|
||||
@@ -225,7 +221,7 @@ class OcrGrafter:
|
||||
if pdf_text_font:
|
||||
font = self.pdf_base.copy_foreign(pdf_text_font)
|
||||
return font, font_key
|
||||
except (FileNotFoundError, pikepdf.PdfError):
|
||||
except (FileNotFoundError, PdfError):
|
||||
# PdfError occurs if a 0-length file is written e.g. due to OCR timeout
|
||||
return None, None
|
||||
|
||||
@@ -234,9 +230,9 @@ class OcrGrafter:
|
||||
*,
|
||||
page_num: int,
|
||||
textpdf: Path,
|
||||
font: pikepdf.Object,
|
||||
font_key: pikepdf.Object,
|
||||
procset: pikepdf.Object,
|
||||
font: Object,
|
||||
font_key: Object,
|
||||
procset: Object,
|
||||
text_rotation: int,
|
||||
strip_old_text: bool,
|
||||
):
|
||||
@@ -247,7 +243,7 @@ class OcrGrafter:
|
||||
return
|
||||
|
||||
# This is a pointer indicating a specific page in the base file
|
||||
with pikepdf.open(textpdf) as pdf_text:
|
||||
with Pdf.open(textpdf) as pdf_text:
|
||||
pdf_text_contents = pdf_text.pages[0].Contents.read_bytes()
|
||||
|
||||
base_page = self.pdf_base.pages.p(page_num)
|
||||
@@ -262,13 +258,13 @@ class OcrGrafter:
|
||||
mediabox = [float(base_page.MediaBox[v]) for v in range(4)]
|
||||
wp, hp = mediabox[2] - mediabox[0], mediabox[3] - mediabox[1]
|
||||
|
||||
translate = pikepdf.PdfMatrix().translated(-wt / 2, -ht / 2)
|
||||
untranslate = pikepdf.PdfMatrix().translated(wp / 2, hp / 2)
|
||||
corner = pikepdf.PdfMatrix().translated(mediabox[0], mediabox[1])
|
||||
translate = PdfMatrix().translated(-wt / 2, -ht / 2)
|
||||
untranslate = PdfMatrix().translated(wp / 2, hp / 2)
|
||||
corner = PdfMatrix().translated(mediabox[0], mediabox[1])
|
||||
# -rotation because the input is a clockwise angle and this formula
|
||||
# uses CCW
|
||||
text_rotation = -text_rotation % 360
|
||||
rotate = pikepdf.PdfMatrix().rotated(text_rotation)
|
||||
rotate = PdfMatrix().rotated(text_rotation)
|
||||
|
||||
# Because of rounding of DPI, we might get a text layer that is not
|
||||
# identically sized to the target page. Scale to adjust. Normally this
|
||||
@@ -279,7 +275,7 @@ class OcrGrafter:
|
||||
scale_y = hp / ht
|
||||
|
||||
# log.debug('%r', scale_x, scale_y)
|
||||
scale = pikepdf.PdfMatrix().scaled(scale_x, scale_y)
|
||||
scale = PdfMatrix().scaled(scale_x, scale_y)
|
||||
|
||||
# Translate the text so it is centered at (0, 0), rotate it there, adjust
|
||||
# for a size different between initial and text PDF, then untranslate, and
|
||||
@@ -302,12 +298,19 @@ class OcrGrafter:
|
||||
pdf_draw_xobj = (
|
||||
(b'q %s cm\n' % ctm.encode()) + (b'%s Do\n' % text_xobj_name) + b'\nQ\n'
|
||||
)
|
||||
new_text_layer = pikepdf.Stream(self.pdf_base, pdf_draw_xobj)
|
||||
new_text_layer = Stream(self.pdf_base, pdf_draw_xobj)
|
||||
|
||||
if strip_old_text:
|
||||
strip_invisible_text(self.pdf_base, base_page)
|
||||
|
||||
base_page.page_contents_add(new_text_layer, prepend=True)
|
||||
if hasattr(Page, 'contents_add'):
|
||||
# pikepdf >= 2.14 adds this method and deprecates the one below
|
||||
Page(base_page).contents_add(new_text_layer, prepend=True)
|
||||
else:
|
||||
# pikepdf < 2.14
|
||||
base_page.page_contents_add(
|
||||
new_text_layer, prepend=True
|
||||
) # pragma: no cover
|
||||
|
||||
_update_resources(
|
||||
obj=base_page, font=font, font_key=font_key, procset=procset
|
||||
|
||||
@@ -48,7 +48,7 @@ def triage_image_file(input_file, output_file, options):
|
||||
log.info("Input file is not a PDF, checking if it is an image...")
|
||||
try:
|
||||
im = Image.open(input_file)
|
||||
except EnvironmentError as e:
|
||||
except OSError as e:
|
||||
# Recover the original filename
|
||||
log.error(str(e).replace(str(input_file), str(options.input_file)))
|
||||
raise UnsupportedImageFormatError() from e
|
||||
@@ -135,7 +135,7 @@ def triage(original_filename, input_file, output_file, options):
|
||||
# Origin file is a pdf create a symlink with pdf extension
|
||||
safe_symlink(input_file, output_file)
|
||||
return output_file
|
||||
except EnvironmentError as e:
|
||||
except OSError as e:
|
||||
log.debug(f"Temporary file was at: {input_file}")
|
||||
msg = str(e).replace(str(input_file), original_filename)
|
||||
raise InputFileError(msg) from e
|
||||
@@ -521,13 +521,12 @@ def create_ocr_image(image: Path, page_context: PageContext):
|
||||
# be None)
|
||||
bbox = [float(v) for v in textarea]
|
||||
xyscale = tuple(float(coord) / 72.0 for coord in im.info['dpi'])
|
||||
pixcoords = [
|
||||
pixcoords = (
|
||||
bbox[0] * xyscale[0],
|
||||
im.height - bbox[3] * xyscale[1],
|
||||
bbox[2] * xyscale[0],
|
||||
im.height - bbox[1] * xyscale[1],
|
||||
]
|
||||
pixcoords = [int(round(c)) for c in pixcoords]
|
||||
)
|
||||
log.debug('blanking %r', pixcoords)
|
||||
draw.rectangle(pixcoords, fill=white)
|
||||
# draw.rectangle(pixcoords, outline=pink)
|
||||
@@ -856,7 +855,7 @@ def merge_sidecars(txt_files: Iterable[Optional[Path]], context: PdfContext):
|
||||
if frm != 1:
|
||||
stream.write('\f') # Form feed between pages
|
||||
if txt_file:
|
||||
with open(txt_file, 'r', encoding="utf-8") as in_:
|
||||
with open(txt_file, encoding="utf-8") as in_:
|
||||
txt = in_.read()
|
||||
# Some OCR engines (e.g. Tesseract v4 alpha) add form feeds
|
||||
# between pages, and some do not. For consistency, we ignore
|
||||
|
||||
+18
-10
@@ -290,15 +290,16 @@ def exec_concurrent(context: PdfContext, executor: Executor):
|
||||
# Copy text file to destination
|
||||
copy_final(text, options.sidecar, context)
|
||||
|
||||
# Merge layers to one single pdf
|
||||
pdf = ocrgraft.finalize()
|
||||
if options.output_type != 'none':
|
||||
# Merge layers to one single pdf
|
||||
pdf = ocrgraft.finalize()
|
||||
|
||||
# PDF/A and metadata
|
||||
log.info("Postprocessing...")
|
||||
pdf = post_process(pdf, context, executor)
|
||||
# PDF/A and metadata
|
||||
log.info("Postprocessing...")
|
||||
pdf = post_process(pdf, context, executor)
|
||||
|
||||
# Copy PDF file to destination
|
||||
copy_final(pdf, options.output_file, context)
|
||||
# Copy PDF file to destination
|
||||
copy_final(pdf, options.output_file, context)
|
||||
|
||||
|
||||
def configure_debug_logging(log_filename: Path, prefix: str = ''):
|
||||
@@ -399,7 +400,7 @@ def run_pipeline(options, *, plugin_manager, api=False):
|
||||
return ExitCode.invalid_output_pdf
|
||||
report_output_file_size(options, start_input_file, options.output_file)
|
||||
|
||||
except (KeyboardInterrupt if not api else NeverRaise) as e:
|
||||
except (KeyboardInterrupt if not api else NeverRaise):
|
||||
if options.verbose >= 1:
|
||||
log.exception("KeyboardInterrupt")
|
||||
else:
|
||||
@@ -413,7 +414,14 @@ def run_pipeline(options, *, plugin_manager, api=False):
|
||||
else:
|
||||
log.error(type(e).__name__)
|
||||
return e.exit_code
|
||||
except (Exception if not api else NeverRaise) as e: # pylint: disable=broad-except
|
||||
except (PIL.Image.DecompressionBombError if not api else NeverRaise) as e:
|
||||
log.exception(
|
||||
"A decompression bomb error was encountered while executing the "
|
||||
"pipeline. Use the argument --max-image-mpixels to raise the maximum "
|
||||
"image pixel limit."
|
||||
)
|
||||
return ExitCode.other_error
|
||||
except (Exception if not api else NeverRaise): # pylint: disable=broad-except
|
||||
log.exception("An exception occurred while executing the pipeline")
|
||||
return ExitCode.other_error
|
||||
finally:
|
||||
@@ -421,7 +429,7 @@ def run_pipeline(options, *, plugin_manager, api=False):
|
||||
try:
|
||||
debug_log_handler.close()
|
||||
log.removeHandler(debug_log_handler)
|
||||
except EnvironmentError as e:
|
||||
except OSError as e:
|
||||
print(e, file=sys.stderr)
|
||||
cleanup_working_files(work_folder, options)
|
||||
|
||||
|
||||
+23
-21
@@ -13,7 +13,7 @@ import sys
|
||||
import unicodedata
|
||||
from pathlib import Path
|
||||
from shutil import copyfileobj
|
||||
from typing import List, Set, Tuple, Union
|
||||
from typing import List, Set, Tuple
|
||||
|
||||
import pikepdf
|
||||
import PIL
|
||||
@@ -26,12 +26,7 @@ from ocrmypdf.exceptions import (
|
||||
MissingDependencyError,
|
||||
OutputFileAccessError,
|
||||
)
|
||||
from ocrmypdf.helpers import (
|
||||
is_file_writable,
|
||||
is_iterable_notstr,
|
||||
monotonic,
|
||||
safe_symlink,
|
||||
)
|
||||
from ocrmypdf.helpers import is_file_writable, monotonic, safe_symlink, samefile
|
||||
from ocrmypdf.hocrtransform import HOCR_OK_LANGS
|
||||
from ocrmypdf.subprocess import check_external_program
|
||||
|
||||
@@ -65,13 +60,14 @@ def check_options_languages(options, ocr_engine_languages):
|
||||
log.debug("No language specified; assuming --language %s", DEFAULT_LANGUAGE)
|
||||
if not ocr_engine_languages:
|
||||
return
|
||||
if not options.languages.issubset(ocr_engine_languages):
|
||||
missing_languages = options.languages - ocr_engine_languages
|
||||
if missing_languages:
|
||||
msg = (
|
||||
f"OCR engine does not have language data for the following "
|
||||
"OCR engine does not have language data for the following "
|
||||
"requested languages: \n"
|
||||
)
|
||||
for lang in options.languages - ocr_engine_languages:
|
||||
msg += lang + '\n'
|
||||
msg += '\n'.join(lang for lang in missing_languages)
|
||||
msg += '\nNote: most languages are identified by a 3-digit ISO 639-2 Code'
|
||||
raise MissingDependencyError(msg)
|
||||
|
||||
|
||||
@@ -79,12 +75,18 @@ def check_options_output(options):
|
||||
is_latin = options.languages.issubset(HOCR_OK_LANGS)
|
||||
|
||||
if options.pdf_renderer.startswith('hocr') and not is_latin:
|
||||
msg = (
|
||||
log.warning(
|
||||
"The 'hocr' PDF renderer is known to cause problems with one "
|
||||
"or more of the languages in your document. Use "
|
||||
"--pdf-renderer auto (the default) to avoid this issue."
|
||||
"`--pdf-renderer auto` (the default) to avoid this issue."
|
||||
)
|
||||
|
||||
if options.output_type == 'none' and options.output_file != os.devnull:
|
||||
raise BadArgsError(
|
||||
"Since you specified `--pdf-renderer none`, the output file "
|
||||
f"{options.output_file} cannot be produced. Set the output file to "
|
||||
f"{os.devnull} to suppress this message."
|
||||
)
|
||||
log.warning(msg)
|
||||
|
||||
lossless_reconstruction = False
|
||||
if not any(
|
||||
@@ -111,6 +113,10 @@ def check_options_sidecar(options):
|
||||
raise BadArgsError(
|
||||
"--sidecar filename must be specified when output file is stdout."
|
||||
)
|
||||
elif options.output_file == os.devnull:
|
||||
raise BadArgsError(
|
||||
"--sidecar filename must be specified when output file is /dev/null or NUL."
|
||||
)
|
||||
options.sidecar = options.output_file + '.txt'
|
||||
if options.sidecar == options.input_file or options.sidecar == options.output_file:
|
||||
raise BadArgsError(
|
||||
@@ -141,8 +147,6 @@ def check_options_preprocessing(options):
|
||||
|
||||
|
||||
def _pages_from_ranges(ranges: str) -> Set[int]:
|
||||
if is_iterable_notstr(ranges):
|
||||
return set(ranges)
|
||||
pages: List[int] = []
|
||||
page_groups = ranges.replace(' ', '').split(',')
|
||||
for g in page_groups:
|
||||
@@ -181,10 +185,8 @@ def _pages_from_ranges(ranges: str) -> Set[int]:
|
||||
|
||||
def check_options_ocr_behavior(options):
|
||||
exclusive_options = sum(
|
||||
[
|
||||
(1 if opt else 0)
|
||||
for opt in (options.force_ocr, options.skip_text, options.redo_ocr)
|
||||
]
|
||||
(1 if opt else 0)
|
||||
for opt in (options.force_ocr, options.skip_text, options.redo_ocr)
|
||||
)
|
||||
if exclusive_options >= 2:
|
||||
raise BadArgsError("Choose only one of --force-ocr, --skip-text, --redo-ocr.")
|
||||
@@ -301,7 +303,7 @@ def check_closed_streams(options): # pragma: no cover
|
||||
if options.input_file == '-':
|
||||
log.error("Trying to read from stdin but stdin seems closed")
|
||||
return False
|
||||
sys.stdin = open(os.devnull, 'r')
|
||||
sys.stdin = open(os.devnull)
|
||||
|
||||
if sys.stdout is None:
|
||||
if options.output_file == '-':
|
||||
|
||||
@@ -5,9 +5,12 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
|
||||
import pkg_resources
|
||||
try:
|
||||
from importlib_metadata import version as _package_version
|
||||
except ImportError:
|
||||
from importlib.metadata import version as _package_version
|
||||
|
||||
PROGRAM_NAME = 'ocrmypdf'
|
||||
|
||||
# Official PEP 396
|
||||
__version__ = pkg_resources.get_distribution('ocrmypdf').version
|
||||
__version__ = _package_version('ocrmypdf')
|
||||
|
||||
+16
-5
@@ -15,10 +15,7 @@ from pathlib import Path
|
||||
from typing import AnyStr, BinaryIO, Iterable, Optional, Union
|
||||
from warnings import warn
|
||||
|
||||
from ocrmypdf._logging import ( # pylint: disable=unused-import
|
||||
PageNumberFilter,
|
||||
TqdmConsole,
|
||||
)
|
||||
from ocrmypdf._logging import PageNumberFilter, TqdmConsole
|
||||
from ocrmypdf._plugin_manager import get_plugin_manager
|
||||
from ocrmypdf._sync import run_pipeline
|
||||
from ocrmypdf._validation import check_options
|
||||
@@ -31,7 +28,7 @@ except ModuleNotFoundError:
|
||||
coloredlogs = None
|
||||
|
||||
|
||||
StrPath = Union[os.PathLike, AnyStr]
|
||||
StrPath = Union[Path, AnyStr]
|
||||
PathOrIO = Union[BinaryIO, StrPath]
|
||||
|
||||
_api_lock = threading.Lock()
|
||||
@@ -338,3 +335,17 @@ def ocr( # pylint: disable=unused-argument
|
||||
options = create_options(**create_options_kwargs)
|
||||
check_options(options, plugin_manager)
|
||||
return run_pipeline(options=options, plugin_manager=plugin_manager, api=True)
|
||||
|
||||
|
||||
__all__ = [
|
||||
'PageNumberFilter',
|
||||
'TqdmConsole',
|
||||
'Verbosity',
|
||||
'check_options',
|
||||
'configure_logging',
|
||||
'create_options',
|
||||
'get_parser',
|
||||
'get_plugin_manager',
|
||||
'ocr',
|
||||
'run_pipeline',
|
||||
]
|
||||
|
||||
@@ -20,9 +20,8 @@ import signal
|
||||
import sys
|
||||
import threading
|
||||
from contextlib import suppress
|
||||
from multiprocessing import Pool as ProcessPool
|
||||
from multiprocessing.pool import ThreadPool
|
||||
from typing import Callable, Iterable, Union
|
||||
from multiprocessing.pool import Pool, ThreadPool
|
||||
from typing import Callable, Iterable, Type, Union
|
||||
|
||||
from tqdm import tqdm
|
||||
|
||||
@@ -31,7 +30,10 @@ from ocrmypdf._logging import TqdmConsole
|
||||
from ocrmypdf.exceptions import InputFileError
|
||||
from ocrmypdf.helpers import remove_all_log_handlers
|
||||
|
||||
ProcessPool = Pool
|
||||
Queue = Union[multiprocessing.Queue, queue.Queue]
|
||||
UserInit = Callable[[], None]
|
||||
WorkerInit = Callable[[Queue, UserInit, int], None]
|
||||
|
||||
|
||||
def log_listener(q: Queue):
|
||||
@@ -62,7 +64,7 @@ def process_sigbus(*args):
|
||||
raise InputFileError("A worker process lost access to an input file")
|
||||
|
||||
|
||||
def process_init(q: Queue, user_init: Callable[[], None], loglevel):
|
||||
def process_init(q: Queue, user_init: UserInit, loglevel) -> None:
|
||||
"""Initialize a process pool worker"""
|
||||
|
||||
# Ignore SIGINT (our parent process will kill us gracefully)
|
||||
@@ -85,7 +87,7 @@ def process_init(q: Queue, user_init: Callable[[], None], loglevel):
|
||||
return
|
||||
|
||||
|
||||
def thread_init(_queue: Queue, user_init: Callable[[], None], _loglevel):
|
||||
def thread_init(q: Queue, user_init: UserInit, loglevel) -> None:
|
||||
# As a thread, block SIGBUS so the main thread deals with it...
|
||||
with suppress(AttributeError):
|
||||
signal.pthread_sigmask(signal.SIG_BLOCK, {signal.SIGBUS})
|
||||
@@ -107,9 +109,9 @@ class StandardExecutor(Executor):
|
||||
task_finished: Callable,
|
||||
):
|
||||
if use_threads:
|
||||
log_queue = queue.Queue(-1)
|
||||
pool_class = ThreadPool
|
||||
initializer = thread_init
|
||||
log_queue: Queue = queue.Queue(-1)
|
||||
pool_class: Type[Pool] = ThreadPool
|
||||
initializer: WorkerInit = thread_init
|
||||
else:
|
||||
log_queue = multiprocessing.Queue(-1)
|
||||
pool_class = ProcessPool
|
||||
|
||||
@@ -11,7 +11,6 @@ import os
|
||||
from ocrmypdf import hookimpl
|
||||
from ocrmypdf._exec import tesseract
|
||||
from ocrmypdf.cli import numeric
|
||||
from ocrmypdf.exceptions import MissingDependencyError
|
||||
from ocrmypdf.helpers import clamp
|
||||
from ocrmypdf.pluginspec import OcrEngine
|
||||
from ocrmypdf.subprocess import check_external_program
|
||||
|
||||
+13
-8
@@ -6,7 +6,7 @@
|
||||
|
||||
|
||||
import argparse
|
||||
from typing import Optional, Type, TypeVar
|
||||
from typing import Any, Callable, Optional, TypeVar
|
||||
|
||||
from ocrmypdf._version import PROGRAM_NAME as _PROGRAM_NAME
|
||||
from ocrmypdf._version import __version__ as _VERSION
|
||||
@@ -14,7 +14,9 @@ from ocrmypdf._version import __version__ as _VERSION
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
def numeric(basetype: Type[T], min_: Optional[T] = None, max_: Optional[T] = None):
|
||||
def numeric(
|
||||
basetype: Callable[[Any], T], min_: Optional[T] = None, max_: Optional[T] = None
|
||||
):
|
||||
"""Validator for numeric params"""
|
||||
min_ = basetype(min_) if min_ is not None else None
|
||||
max_ = basetype(max_) if max_ is not None else None
|
||||
@@ -22,7 +24,7 @@ def numeric(basetype: Type[T], min_: Optional[T] = None, max_: Optional[T] = Non
|
||||
def _numeric(string):
|
||||
value = basetype(string)
|
||||
if (min_ is not None and value < min_) or (max_ is not None and value > max_):
|
||||
msg = "%r not in valid range %r" % (string, (min_, max_))
|
||||
msg = f"{string!r} not in valid range {(min_, max_)!r}"
|
||||
raise argparse.ArgumentTypeError(msg)
|
||||
return value
|
||||
|
||||
@@ -145,7 +147,7 @@ Online documentation is located at:
|
||||
)
|
||||
parser.add_argument(
|
||||
'--output-type',
|
||||
choices=['pdfa', 'pdf', 'pdfa-1', 'pdfa-2', 'pdfa-3'],
|
||||
choices=['pdfa', 'pdf', 'pdfa-1', 'pdfa-2', 'pdfa-3', 'none'],
|
||||
default='pdfa',
|
||||
help="Choose output type. 'pdfa' creates a PDF/A-2b compliant file for "
|
||||
"long term archiving (default, recommended) but may not suitable "
|
||||
@@ -153,7 +155,8 @@ Online documentation is located at:
|
||||
"also has problems with full Unicode text. 'pdf' attempts to "
|
||||
"preserve file contents as much as possible. 'pdf-a1' creates a "
|
||||
"PDF/A1-b file. 'pdf-a2' is equivalent to 'pdfa'. 'pdf-a3' creates a "
|
||||
"PDF/A3-b file.",
|
||||
"PDF/A3-b file. 'none' will produce no output, which may be helpful if "
|
||||
"only the --sidecar is desired.",
|
||||
)
|
||||
|
||||
# Use null string '\0' as sentinel to indicate the user supplied no argument,
|
||||
@@ -338,8 +341,9 @@ Online documentation is located at:
|
||||
"Control how PDF is optimized after processing:"
|
||||
"0 - do not optimize; "
|
||||
"1 - do safe, lossless optimizations (default); "
|
||||
"2 - do some lossy optimizations; "
|
||||
"3 - do aggressive lossy optimizations (including lossy JBIG2)"
|
||||
"2 - do lossy JPEG and JPEG2000 optimizations; "
|
||||
"3 - do more aggressive lossy JPEG and JPEG2000 optimizations. "
|
||||
"To enable lossy JBIG2, see --jbig2-lossy."
|
||||
),
|
||||
)
|
||||
optimizing.add_argument(
|
||||
@@ -377,7 +381,8 @@ Online documentation is located at:
|
||||
action='store_true',
|
||||
help=(
|
||||
"Enable JBIG2 lossy mode (better compression, not suitable for some "
|
||||
"use cases - see documentation)."
|
||||
"use cases - see documentation). Only takes effect if --optimize 1 or "
|
||||
"higher is also enabled."
|
||||
),
|
||||
)
|
||||
optimizing.add_argument(
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# © 2021 James R. Barlow: github.com/jbarlow83
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
|
||||
"""Data files used to generate certain PDFs."""
|
||||
@@ -28,7 +28,7 @@ from enum import Enum, auto
|
||||
from itertools import islice, repeat, takewhile, zip_longest
|
||||
from multiprocessing import Pipe, Process
|
||||
from multiprocessing.connection import Connection, wait
|
||||
from typing import Callable, Iterable, Iterator
|
||||
from typing import Callable, Iterable, Iterator, List
|
||||
|
||||
from ocrmypdf import Executor, hookimpl
|
||||
from ocrmypdf._concurrent import NullProgressBar
|
||||
@@ -60,7 +60,9 @@ def process_sigbus(*args):
|
||||
|
||||
class ConnectionLogHandler(logging.handlers.QueueHandler):
|
||||
def __init__(self, conn: Connection) -> None:
|
||||
super().__init__(None)
|
||||
# sets the parent's queue to None - parent only touches queue
|
||||
# in enqueue() which we override
|
||||
super().__init__(None) # type: ignore
|
||||
self.conn = conn
|
||||
|
||||
def enqueue(self, record):
|
||||
@@ -126,8 +128,8 @@ class LambdaExecutor(Executor):
|
||||
if not grouped_args:
|
||||
return
|
||||
|
||||
processes = []
|
||||
connections = []
|
||||
processes: List[Process] = []
|
||||
connections: List[Connection] = []
|
||||
for chunk in grouped_args:
|
||||
parent_conn, child_conn = Pipe()
|
||||
|
||||
@@ -152,6 +154,8 @@ class LambdaExecutor(Executor):
|
||||
with self.pbar_class(**tqdm_kwargs) as pbar:
|
||||
while connections:
|
||||
for r in wait(connections):
|
||||
if not isinstance(r, Connection):
|
||||
raise NotImplementedError("We only support Connection()")
|
||||
try:
|
||||
msg_type, msg = r.recv()
|
||||
except EOFError:
|
||||
|
||||
+24
-5
@@ -25,19 +25,31 @@ log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Resolution(namedtuple('Resolution', ('x', 'y'))):
|
||||
"""The number of pixels per inch in each 2D direction."""
|
||||
"""The number of pixels per inch in each 2D direction.
|
||||
|
||||
Resolution objects are considered "equal" for == purposes if they are
|
||||
equal to a reasonable tolerance.
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
# rel_tol after converting from dpi to pixels per meter and saving
|
||||
# as integer with rounding, as many file formats
|
||||
CONVERSION_ERROR = 0.002
|
||||
|
||||
def round(self, ndigits: int):
|
||||
return Resolution(round(self.x, ndigits), round(self.y, ndigits))
|
||||
|
||||
def to_int(self):
|
||||
return Resolution(int(round(self.x)), int(round(self.y)))
|
||||
|
||||
@classmethod
|
||||
def _isclose(cls, a, b):
|
||||
return isclose(a, b, rel_tol=cls.CONVERSION_ERROR)
|
||||
|
||||
@property
|
||||
def is_square(self) -> bool:
|
||||
return isclose(self.x, self.y, rel_tol=1e-3)
|
||||
return self._isclose(self.x, self.y)
|
||||
|
||||
@property
|
||||
def is_finite(self) -> bool:
|
||||
@@ -61,6 +73,13 @@ class Resolution(namedtuple('Resolution', ('x', 'y'))):
|
||||
def __repr__(self): # pragma: no cover
|
||||
return f"Resolution({self.x}x{self.y} dpi)"
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, tuple) and len(other) == 2:
|
||||
other = Resolution(*other)
|
||||
if not isinstance(other, Resolution):
|
||||
return NotImplemented
|
||||
return self._isclose(self.x, other.x) and self._isclose(self.y, other.y)
|
||||
|
||||
|
||||
class NeverRaise(Exception):
|
||||
"""An exception that is never raised"""
|
||||
@@ -170,7 +189,7 @@ def is_file_writable(test_file: os.PathLike) -> bool:
|
||||
with suppress(OSError):
|
||||
p.unlink()
|
||||
return True
|
||||
except (EnvironmentError, RuntimeError) as e:
|
||||
except (OSError, RuntimeError) as e:
|
||||
log.debug(e)
|
||||
log.error(str(e))
|
||||
return False
|
||||
@@ -207,7 +226,7 @@ def check_pdf(input_file: Path) -> bool:
|
||||
except (
|
||||
# Workaround for a problematic pikepdf version
|
||||
# pragma: no cover
|
||||
getattr(pikepdf, 'ForeignObjectError')
|
||||
pikepdf.ForeignObjectError
|
||||
if pikepdf.__version__ == '2.1.0'
|
||||
else NeverRaise
|
||||
):
|
||||
@@ -254,7 +273,7 @@ def deprecated(func):
|
||||
def new_func(*args, **kwargs):
|
||||
warnings.simplefilter('always', DeprecationWarning) # turn off filter
|
||||
warnings.warn(
|
||||
"Call to deprecated function {}.".format(func.__name__),
|
||||
f"Call to deprecated function {func.__name__}.",
|
||||
category=DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
import argparse
|
||||
import os
|
||||
import re
|
||||
from itertools import chain
|
||||
from math import atan, cos, sin
|
||||
from pathlib import Path
|
||||
from typing import Any, NamedTuple, Optional, Tuple, Union
|
||||
@@ -297,13 +296,11 @@ class HocrTransform:
|
||||
)
|
||||
|
||||
found_lines = False
|
||||
for line in sorted(
|
||||
chain(
|
||||
self.hocr.iterfind(self._child_xpath('span', 'ocr_header')),
|
||||
self.hocr.iterfind(self._child_xpath('span', 'ocr_line')),
|
||||
self.hocr.iterfind(self._child_xpath('span', 'ocr_textfloat')),
|
||||
),
|
||||
key=self.topdown_position,
|
||||
for line in (
|
||||
element
|
||||
for element in self.hocr.iterfind(self._child_xpath('span'))
|
||||
if 'class' in element.attrib
|
||||
and element.attrib['class'] in {'ocr_header', 'ocr_line', 'ocr_textfloat'}
|
||||
):
|
||||
found_lines = True
|
||||
self._do_line(
|
||||
@@ -352,7 +349,7 @@ class HocrTransform:
|
||||
interword_spaces: bool,
|
||||
show_bounding_boxes: bool,
|
||||
):
|
||||
if not line:
|
||||
if line is None:
|
||||
return
|
||||
pxl_line_coords = self.element_coordinates(line)
|
||||
line_box = self.pt_from_pixel(pxl_line_coords)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# © 2013-16: jbarlow83 from Github (https://github.com/jbarlow83)
|
||||
#
|
||||
@@ -13,6 +12,7 @@
|
||||
import argparse
|
||||
import logging
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
import threading
|
||||
from collections import deque
|
||||
@@ -23,6 +23,7 @@ from functools import lru_cache
|
||||
from io import BytesIO, UnsupportedOperation
|
||||
from os import fspath
|
||||
from tempfile import TemporaryFile
|
||||
from typing import ContextManager, Type
|
||||
from warnings import warn
|
||||
|
||||
from ocrmypdf.exceptions import MissingDependencyError
|
||||
@@ -67,7 +68,7 @@ if os.name == 'nt':
|
||||
# Loading zlib from other places could cause a version mismatch
|
||||
_zlib_path = os.path.join(os.path.dirname(_libpath), 'zlib1.dll')
|
||||
if not os.path.exists(_zlib_path):
|
||||
_zlib_path = find_library('zlib')
|
||||
_zlib_path = find_library('zlib') or ''
|
||||
try:
|
||||
zlib = ffi.dlopen(_zlib_path)
|
||||
except ffi.error as e:
|
||||
@@ -86,7 +87,7 @@ except ffi.error as e:
|
||||
) from e
|
||||
|
||||
|
||||
class _LeptonicaErrorTrap_Redirect:
|
||||
class _LeptonicaErrorTrap_Redirect(ContextManager):
|
||||
"""
|
||||
Context manager to trap errors reported by Leptonica < 1.79 or on Apple Silicon.
|
||||
|
||||
@@ -132,7 +133,7 @@ class _LeptonicaErrorTrap_Redirect:
|
||||
except Exception:
|
||||
self.leptonica_lock.release()
|
||||
raise
|
||||
return self
|
||||
return
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
# Restore old stderr
|
||||
@@ -172,7 +173,7 @@ tls = threading.local()
|
||||
tls.trap = None
|
||||
|
||||
|
||||
class _LeptonicaErrorTrap_Queue:
|
||||
class _LeptonicaErrorTrap_Queue(ContextManager):
|
||||
def __init__(self):
|
||||
self.queue = deque()
|
||||
|
||||
@@ -226,7 +227,7 @@ except (ffi.error, MemoryError):
|
||||
# Pre-1.79 Leptonica does not have leptSetStderrHandler
|
||||
# And some platforms, notably Apple ARM 64, do not allow the write+execute
|
||||
# memory needed to set up the callback function.
|
||||
_LeptonicaErrorTrap = _LeptonicaErrorTrap_Redirect
|
||||
_LeptonicaErrorTrap: Type[ContextManager] = _LeptonicaErrorTrap_Redirect
|
||||
else:
|
||||
# 1.79 have this new symbol
|
||||
_LeptonicaErrorTrap = _LeptonicaErrorTrap_Queue
|
||||
@@ -272,7 +273,7 @@ class LeptonicaObject:
|
||||
# Leptonica API uses double-pointers for its destroy APIs to prevent
|
||||
# dangling pointers. This means we need to put our single pointer,
|
||||
# cdata, in a temporary CDATA**.
|
||||
pp = ffi.new('{} **'.format(cls.LEPTONICA_TYPENAME), cdata)
|
||||
pp = ffi.new(f'{cls.LEPTONICA_TYPENAME} **', cdata)
|
||||
cls.cdata_destroy(pp)
|
||||
|
||||
|
||||
@@ -439,6 +440,9 @@ class Pix(LeptonicaObject):
|
||||
bio = BytesIO()
|
||||
pillow_image.save(bio, format='png', compress_level=1)
|
||||
py_buffer = bio.getbuffer()
|
||||
if platform.python_implementation() == 'PyPy':
|
||||
# PyPy complains that it cannot do from_buffer(memoryview)
|
||||
py_buffer = bytes(py_buffer)
|
||||
c_buffer = ffi.from_buffer(py_buffer)
|
||||
with _LeptonicaErrorTrap():
|
||||
pix = Pix(lept.pixReadMem(c_buffer, len(c_buffer)))
|
||||
@@ -844,7 +848,7 @@ class Box(LeptonicaObject):
|
||||
|
||||
def __repr__(self):
|
||||
if self._cdata:
|
||||
return '<leptonica.Box x={0} y={1} w={2} h={3}>'.format(
|
||||
return '<leptonica.Box x={} y={} w={} h={}>'.format(
|
||||
self.x, self.y, self.w, self.h
|
||||
)
|
||||
return '<leptonica.Box NULL>'
|
||||
@@ -916,7 +920,7 @@ class Sel(LeptonicaObject):
|
||||
lines = [line.strip() for line in selstr.split('\n') if line.strip()]
|
||||
h = len(lines)
|
||||
w = len(lines[0])
|
||||
lengths = set(len(line) for line in lines)
|
||||
lengths = {len(line) for line in lines}
|
||||
if len(lengths) != 1:
|
||||
raise ValueError("All lines in selstr must be same length")
|
||||
|
||||
|
||||
+29
-17
@@ -25,8 +25,16 @@ from typing import (
|
||||
)
|
||||
|
||||
import img2pdf
|
||||
import pikepdf
|
||||
from pikepdf import Dictionary, Name, Object, Pdf, PdfImage
|
||||
from pikepdf import (
|
||||
Dictionary,
|
||||
Name,
|
||||
Object,
|
||||
ObjectStreamMode,
|
||||
Pdf,
|
||||
PdfImage,
|
||||
Stream,
|
||||
UnsupportedImageTypeError,
|
||||
)
|
||||
from PIL import Image
|
||||
|
||||
from ocrmypdf import leptonica
|
||||
@@ -63,7 +71,7 @@ def jpg_name(root: Path, xref: Xref) -> Path:
|
||||
|
||||
|
||||
def extract_image_filter(
|
||||
pike: Pdf, root: Path, image: Object, xref: Xref
|
||||
pike: Pdf, root: Path, image: Stream, xref: Xref
|
||||
) -> Optional[Tuple[PdfImage, Tuple[Name, Object]]]:
|
||||
del pike # unused args
|
||||
del root
|
||||
@@ -89,7 +97,7 @@ def extract_image_filter(
|
||||
return None # Don't mess with wide gamut images
|
||||
|
||||
if filtdp[0] == Name.JPXDecode:
|
||||
log.debug(f"Skipping JPEG2000 iamge, xref {xref}")
|
||||
log.debug(f"Skipping JPEG2000 image, xref {xref}")
|
||||
return None # Don't do JPEG2000
|
||||
|
||||
if filtdp[0] == Name.CCITTFaxDecode and filtdp[1].get('/K', 0) >= 0:
|
||||
@@ -104,7 +112,7 @@ def extract_image_filter(
|
||||
|
||||
|
||||
def extract_image_jbig2(
|
||||
*, pike: pikepdf.Pdf, root: Path, image: Object, xref: Xref, options
|
||||
*, pike: Pdf, root: Path, image: Stream, xref: Xref, options
|
||||
) -> Optional[XrefExt]:
|
||||
del options # unused arg
|
||||
|
||||
@@ -123,16 +131,16 @@ def extract_image_jbig2(
|
||||
# Showing the palette or ICC to jbig2enc will cause it to perform
|
||||
# colorspace transform to 1bpp, which will conflict the palette or
|
||||
# ICC if it exists.
|
||||
colorspace = pim.obj.get(pikepdf.Name.ColorSpace, None)
|
||||
colorspace = pim.obj.get(Name.ColorSpace, None)
|
||||
if colorspace is not None or pim.image_mask:
|
||||
try:
|
||||
# Set to DeviceGray temporarily; we already in 1 bpc.
|
||||
pim.obj.ColorSpace = pikepdf.Name.DeviceGray
|
||||
pim.obj.ColorSpace = Name.DeviceGray
|
||||
imgname = root / f'{xref:08d}'
|
||||
with imgname.open('wb') as f:
|
||||
ext = pim.extract_to(stream=f)
|
||||
imgname.rename(imgname.with_suffix(ext))
|
||||
except pikepdf.UnsupportedImageTypeError:
|
||||
except UnsupportedImageTypeError:
|
||||
return None
|
||||
finally:
|
||||
# Restore image colorspace after temporarily setting it to DeviceGray
|
||||
@@ -145,7 +153,7 @@ def extract_image_jbig2(
|
||||
|
||||
|
||||
def extract_image_generic(
|
||||
*, pike: Pdf, root: Path, image: PdfImage, xref: Xref, options
|
||||
*, pike: Pdf, root: Path, image: Stream, xref: Xref, options
|
||||
) -> Optional[XrefExt]:
|
||||
result = extract_image_filter(pike, root, image, xref)
|
||||
if result is None:
|
||||
@@ -178,7 +186,7 @@ def extract_image_generic(
|
||||
with imgname.open('wb') as f:
|
||||
ext = pim.extract_to(stream=f)
|
||||
imgname.rename(imgname.with_suffix(ext))
|
||||
except pikepdf.UnsupportedImageTypeError:
|
||||
except UnsupportedImageTypeError:
|
||||
return None
|
||||
return XrefExt(xref, ext)
|
||||
elif (
|
||||
@@ -365,6 +373,7 @@ def convert_to_jbig2(
|
||||
When the JBIG2 symbolic coder is not used, each JBIG2 stands on its own
|
||||
and needs no dictionary. Currently this must be lossless JBIG2.
|
||||
"""
|
||||
jbig2_globals_dict: Optional[Dictionary]
|
||||
|
||||
_produce_jbig2_images(jbig2_groups, root, options, executor)
|
||||
|
||||
@@ -373,7 +382,7 @@ def convert_to_jbig2(
|
||||
jbig2_symfile = root / (prefix + '.sym')
|
||||
if jbig2_symfile.exists():
|
||||
jbig2_globals_data = jbig2_symfile.read_bytes()
|
||||
jbig2_globals = pikepdf.Stream(pike, jbig2_globals_data)
|
||||
jbig2_globals = Stream(pike, jbig2_globals_data)
|
||||
jbig2_globals_dict = Dictionary(JBIG2Globals=jbig2_globals)
|
||||
elif options.jbig2_page_group_size == 1:
|
||||
jbig2_globals_dict = None
|
||||
@@ -444,8 +453,8 @@ def _transcode_png(pike: Pdf, filename: Path, xref: Xref) -> bool:
|
||||
with output.open('wb') as f:
|
||||
img2pdf.convert(fspath(filename), outputstream=f)
|
||||
|
||||
with pikepdf.open(output) as pdf_image:
|
||||
foreign_image = next(pdf_image.pages[0].images.values())
|
||||
with Pdf.open(output) as pdf_image:
|
||||
foreign_image = next(iter(pdf_image.pages[0].images.values()))
|
||||
local_image = pike.copy_foreign(foreign_image)
|
||||
|
||||
im_obj = pike.get_object(xref, 0)
|
||||
@@ -524,12 +533,15 @@ def transcode_pngs(
|
||||
_transcode_png(pike, filename, xref)
|
||||
|
||||
|
||||
DEFAULT_EXECUTOR = SerialExecutor()
|
||||
|
||||
|
||||
def optimize(
|
||||
input_file: Path,
|
||||
output_file: Path,
|
||||
context,
|
||||
save_settings,
|
||||
executor: Executor = SerialExecutor(),
|
||||
executor: Executor = DEFAULT_EXECUTOR,
|
||||
) -> None:
|
||||
options = context.options
|
||||
if options.optimize == 0:
|
||||
@@ -543,7 +555,7 @@ def optimize(
|
||||
if options.jbig2_page_group_size == 0:
|
||||
options.jbig2_page_group_size = 10 if options.jbig2_lossy else 1
|
||||
|
||||
with pikepdf.Pdf.open(input_file) as pike:
|
||||
with Pdf.open(input_file) as pike:
|
||||
root = output_file.parent / 'images'
|
||||
root.mkdir(exist_ok=True)
|
||||
|
||||
@@ -575,7 +587,7 @@ def optimize(
|
||||
if savings < 0:
|
||||
log.info("Image optimization did not improve the file - discarded")
|
||||
# We still need to save the file
|
||||
with pikepdf.open(input_file) as pike:
|
||||
with Pdf.open(input_file) as pike:
|
||||
pike.remove_unreferenced_resources()
|
||||
pike.save(output_file, **save_settings)
|
||||
else:
|
||||
@@ -622,7 +634,7 @@ def main(infile, outfile, level, jobs=1):
|
||||
dict(
|
||||
compress_streams=True,
|
||||
preserve_pdfa=True,
|
||||
object_stream_mode=pikepdf.ObjectStreamMode.generate,
|
||||
object_stream_mode=ObjectStreamMode.generate,
|
||||
),
|
||||
)
|
||||
copy(fspath(tmpout), fspath(outfile))
|
||||
|
||||
+13
-6
@@ -13,13 +13,20 @@ import base64
|
||||
from pathlib import Path
|
||||
from typing import Dict, Iterator, Union
|
||||
|
||||
try:
|
||||
from importlib_resources import read_binary
|
||||
except ImportError:
|
||||
from importlib.resources import read_binary
|
||||
import pikepdf
|
||||
import pkg_resources
|
||||
import pkg_resources # deprecated
|
||||
|
||||
# Deprecated
|
||||
ICC_PROFILE_RELPATH = 'data/sRGB.icc'
|
||||
|
||||
# Deprecated
|
||||
SRGB_ICC_PROFILE = pkg_resources.resource_filename('ocrmypdf', ICC_PROFILE_RELPATH)
|
||||
|
||||
SRGB_ICC_PROFILE_NAME = 'sRGB.icc'
|
||||
|
||||
|
||||
def _postscript_objdef(
|
||||
alias: str,
|
||||
@@ -97,12 +104,12 @@ def generate_pdfa_ps(target_filename: Path, icc: str = 'sRGB'):
|
||||
References:
|
||||
Adobe PDFMARK Reference: https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdfmark_reference.pdf
|
||||
"""
|
||||
if icc == 'sRGB':
|
||||
icc_profile = SRGB_ICC_PROFILE
|
||||
else:
|
||||
if icc != 'sRGB':
|
||||
raise NotImplementedError("Only supporting sRGB")
|
||||
|
||||
bytes_icc_profile = Path(icc_profile).read_bytes()
|
||||
bytes_icc_profile = read_binary(
|
||||
'ocrmypdf.data', SRGB_ICC_PROFILE_NAME
|
||||
)
|
||||
ps = '\n'.join(_make_postscript(icc, bytes_icc_profile, 3))
|
||||
|
||||
# We should have encoded everything to pure ASCII by this point, and
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
import atexit
|
||||
import logging
|
||||
import re
|
||||
from collections import defaultdict, namedtuple
|
||||
from collections import defaultdict
|
||||
from contextlib import ExitStack
|
||||
from decimal import Decimal
|
||||
from enum import Enum
|
||||
@@ -17,11 +17,27 @@ from functools import partial
|
||||
from math import hypot, inf, isclose
|
||||
from os import PathLike
|
||||
from pathlib import Path
|
||||
from typing import Container, Iterator, Optional, Tuple, Union
|
||||
from typing import (
|
||||
Container,
|
||||
Dict,
|
||||
Iterator,
|
||||
List,
|
||||
Mapping,
|
||||
NamedTuple,
|
||||
Optional,
|
||||
Tuple,
|
||||
Union,
|
||||
)
|
||||
from warnings import warn
|
||||
|
||||
import pikepdf
|
||||
from pikepdf import Object, Pdf, PdfMatrix
|
||||
from pikepdf import (
|
||||
Object,
|
||||
Pdf,
|
||||
PdfImage,
|
||||
PdfInlineImage,
|
||||
PdfMatrix,
|
||||
parse_content_stream,
|
||||
)
|
||||
|
||||
from ocrmypdf._concurrent import Executor, SerialExecutor
|
||||
from ocrmypdf.exceptions import EncryptedPdfError, InputFileError
|
||||
@@ -36,7 +52,7 @@ Encoding = Enum(
|
||||
'Encoding', 'ccitt jpeg jpeg2000 jbig2 asciihex ascii85 lzw flate runlength'
|
||||
)
|
||||
|
||||
FRIENDLY_COLORSPACE = {
|
||||
FRIENDLY_COLORSPACE: Dict[str, Colorspace] = {
|
||||
'/DeviceGray': Colorspace.gray,
|
||||
'/CalGray': Colorspace.gray,
|
||||
'/DeviceRGB': Colorspace.rgb,
|
||||
@@ -54,7 +70,7 @@ FRIENDLY_COLORSPACE = {
|
||||
'/I': Colorspace.index,
|
||||
}
|
||||
|
||||
FRIENDLY_ENCODING = {
|
||||
FRIENDLY_ENCODING: Dict[str, Encoding] = {
|
||||
'/CCITTFaxDecode': Encoding.ccitt,
|
||||
'/DCTDecode': Encoding.jpeg,
|
||||
'/JPXDecode': Encoding.jpeg2000,
|
||||
@@ -68,7 +84,7 @@ FRIENDLY_ENCODING = {
|
||||
'/RL': Encoding.runlength,
|
||||
}
|
||||
|
||||
FRIENDLY_COMP = {
|
||||
FRIENDLY_COMP: Dict[Colorspace, int] = {
|
||||
Colorspace.gray: 1,
|
||||
Colorspace.rgb: 3,
|
||||
Colorspace.cmyk: 4,
|
||||
@@ -86,16 +102,30 @@ def _is_unit_square(shorthand):
|
||||
return all(isclose(a, b, rel_tol=1e-3) for a, b in pairwise)
|
||||
|
||||
|
||||
XobjectSettings = namedtuple('XobjectSettings', ['name', 'shorthand', 'stack_depth'])
|
||||
class XobjectSettings(NamedTuple):
|
||||
name: str
|
||||
shorthand: Tuple[float, float, float, float, float, float]
|
||||
stack_depth: int
|
||||
|
||||
InlineSettings = namedtuple('InlineSettings', ['iimage', 'shorthand', 'stack_depth'])
|
||||
|
||||
ContentsInfo = namedtuple(
|
||||
'ContentsInfo',
|
||||
['xobject_settings', 'inline_images', 'found_vector', 'found_text', 'name_index'],
|
||||
)
|
||||
class InlineSettings(NamedTuple):
|
||||
iimage: PdfInlineImage
|
||||
shorthand: Tuple[float, float, float, float, float, float]
|
||||
stack_depth: int
|
||||
|
||||
TextboxInfo = namedtuple('TextboxInfo', ['bbox', 'is_visible', 'is_corrupt'])
|
||||
|
||||
class ContentsInfo(NamedTuple):
|
||||
xobject_settings: List[XobjectSettings]
|
||||
inline_images: List[InlineSettings]
|
||||
found_vector: bool
|
||||
found_text: bool
|
||||
name_index: Mapping[str, List[XobjectSettings]]
|
||||
|
||||
|
||||
class TextboxInfo(NamedTuple):
|
||||
bbox: Tuple[float, float, float, float]
|
||||
is_visible: bool
|
||||
is_corrupt: bool
|
||||
|
||||
|
||||
class VectorMarker:
|
||||
@@ -146,8 +176,8 @@ def _interpret_contents(contentstream: Object, initial_shorthand=UNIT_SQUARE):
|
||||
|
||||
stack = []
|
||||
ctm = PdfMatrix(initial_shorthand)
|
||||
xobject_settings = []
|
||||
inline_images = []
|
||||
xobject_settings: List[XobjectSettings] = []
|
||||
inline_images: List[InlineSettings] = []
|
||||
name_index = defaultdict(lambda: [])
|
||||
found_vector = False
|
||||
found_text = False
|
||||
@@ -157,9 +187,7 @@ def _interpret_contents(contentstream: Object, initial_shorthand=UNIT_SQUARE):
|
||||
operator_whitelist = ' '.join(vector_ops | text_showing_ops | image_ops)
|
||||
|
||||
for n, graphobj in enumerate(
|
||||
_normalize_stack(
|
||||
pikepdf.parse_content_stream(contentstream, operator_whitelist)
|
||||
)
|
||||
_normalize_stack(parse_content_stream(contentstream, operator_whitelist))
|
||||
):
|
||||
operands, operator = graphobj
|
||||
if operator == 'q':
|
||||
@@ -185,7 +213,7 @@ def _interpret_contents(contentstream: Object, initial_shorthand=UNIT_SQUARE):
|
||||
name=image_name, shorthand=ctm.shorthand, stack_depth=len(stack)
|
||||
)
|
||||
xobject_settings.append(settings)
|
||||
name_index[image_name].append(settings)
|
||||
name_index[str(image_name)].append(settings)
|
||||
elif operator == 'INLINE IMAGE': # BI/ID/EI are grouped into this
|
||||
iimage = operands[0]
|
||||
inline = InlineSettings(
|
||||
@@ -271,23 +299,28 @@ def _get_dpi(ctm_shorthand, image_size) -> Resolution:
|
||||
class ImageInfo:
|
||||
DPI_PREC = Decimal('1.000')
|
||||
|
||||
_comp: Optional[int]
|
||||
_name: str
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
name='',
|
||||
pdfimage: Optional[Object] = None,
|
||||
inline: Optional[Object] = None,
|
||||
inline: Optional[PdfInlineImage] = None,
|
||||
shorthand=None,
|
||||
):
|
||||
self._name = str(name)
|
||||
self._shorthand = shorthand
|
||||
|
||||
pim: Union[PdfInlineImage, PdfImage]
|
||||
|
||||
if inline is not None:
|
||||
self._origin = 'inline'
|
||||
pim = inline.iimage
|
||||
pim = inline
|
||||
elif pdfimage is not None:
|
||||
self._origin = 'xobject'
|
||||
pim = pikepdf.PdfImage(pdfimage)
|
||||
pim = PdfImage(pdfimage)
|
||||
else:
|
||||
raise ValueError("Either pdfimage or inline must be set")
|
||||
self._width = pim.width
|
||||
@@ -303,14 +336,14 @@ class ImageInfo:
|
||||
|
||||
self._bpc = int(pim.bits_per_component)
|
||||
try:
|
||||
self._enc = FRIENDLY_ENCODING.get(pim.filters[0], 'image')
|
||||
self._enc = FRIENDLY_ENCODING.get(pim.filters[0])
|
||||
except IndexError:
|
||||
self._enc = '?'
|
||||
self._enc = None
|
||||
|
||||
try:
|
||||
self._color = FRIENDLY_COLORSPACE.get(pim.colorspace, '?')
|
||||
self._color = FRIENDLY_COLORSPACE.get(pim.colorspace or '')
|
||||
except NotImplementedError:
|
||||
self._color = '?'
|
||||
self._color = None
|
||||
if self._enc == Encoding.jpeg2000:
|
||||
self._color = Colorspace.jpeg2000
|
||||
|
||||
@@ -324,11 +357,14 @@ class ImageInfo:
|
||||
else:
|
||||
self._comp = 3
|
||||
else:
|
||||
self._comp = FRIENDLY_COMP.get(self._color, '?')
|
||||
if isinstance(self._color, Colorspace):
|
||||
self._comp = FRIENDLY_COMP.get(self._color)
|
||||
else:
|
||||
self._comp = None
|
||||
|
||||
# Bit of a hack... infer grayscale if component count is uncertain
|
||||
# but encoding only supports monochrome.
|
||||
if self._comp == '?' and self._enc in (Encoding.ccitt, Encoding.jbig2):
|
||||
if self._comp is None and self._enc in (Encoding.ccitt, Encoding.jbig2):
|
||||
self._comp = FRIENDLY_COMP[Colorspace.gray]
|
||||
|
||||
@property
|
||||
@@ -353,15 +389,15 @@ class ImageInfo:
|
||||
|
||||
@property
|
||||
def color(self):
|
||||
return self._color
|
||||
return self._color if self._color is not None else '?'
|
||||
|
||||
@property
|
||||
def comp(self):
|
||||
return self._comp
|
||||
return self._comp if self._comp is not None else '?'
|
||||
|
||||
@property
|
||||
def enc(self):
|
||||
return self._enc
|
||||
return self._enc if self._enc is not None else 'image'
|
||||
|
||||
@property
|
||||
def renderable(self):
|
||||
@@ -388,7 +424,7 @@ def _find_inline_images(contentsinfo: ContentsInfo) -> Iterator[ImageInfo]:
|
||||
|
||||
for n, inline in enumerate(contentsinfo.inline_images):
|
||||
yield ImageInfo(
|
||||
name='inline-%02d' % n, shorthand=inline.shorthand, inline=inline
|
||||
name='inline-%02d' % n, shorthand=inline.shorthand, inline=inline.iimage
|
||||
)
|
||||
|
||||
|
||||
@@ -413,7 +449,7 @@ def _image_xobjects(container) -> Iterator[Tuple[Object, str]]:
|
||||
xobjs = resources['/XObject'].as_dict()
|
||||
for xobj in xobjs:
|
||||
candidate: Object = xobjs[xobj]
|
||||
if not '/Subtype' in candidate:
|
||||
if '/Subtype' not in candidate:
|
||||
continue
|
||||
if candidate['/Subtype'] == '/Image':
|
||||
pdfimage = candidate
|
||||
@@ -583,7 +619,7 @@ def _pdf_pageinfo_sync_init(pdf: Pdf, infile: Path, pdfminer_loglevel):
|
||||
|
||||
# If the pdf is not opened, open a copy for our worker process to use
|
||||
if pdf is None:
|
||||
worker_pdf = pikepdf.open(infile)
|
||||
worker_pdf = Pdf.open(infile)
|
||||
|
||||
def on_process_close():
|
||||
worker_pdf.close()
|
||||
@@ -597,7 +633,7 @@ def _pdf_pageinfo_sync(args):
|
||||
pdf = thread_pdf if thread_pdf is not None else worker_pdf
|
||||
with ExitStack() as stack:
|
||||
if not pdf: # When called with SerialExecutor
|
||||
pdf = stack.enter_context(pikepdf.open(infile))
|
||||
pdf = stack.enter_context(Pdf.open(infile))
|
||||
page = PageInfo(pdf, pageno, infile, check_pages, detailed_analysis)
|
||||
return page
|
||||
|
||||
@@ -661,6 +697,10 @@ def _pdf_pageinfo_concurrent(
|
||||
|
||||
|
||||
class PageInfo:
|
||||
_has_text: Optional[bool]
|
||||
_has_vector: Optional[bool]
|
||||
_images: List[ImageInfo]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
pdf: Pdf,
|
||||
@@ -732,7 +772,7 @@ class PageInfo:
|
||||
else:
|
||||
self._has_vector = None # i.e. "no information"
|
||||
self._has_text = None
|
||||
self._images = None
|
||||
self._images = []
|
||||
|
||||
self._dpi = None
|
||||
if self._images:
|
||||
@@ -749,7 +789,7 @@ class PageInfo:
|
||||
|
||||
@property
|
||||
def has_text(self) -> bool:
|
||||
return self._has_text
|
||||
return bool(self._has_text)
|
||||
|
||||
@property
|
||||
def has_corrupt_text(self) -> bool:
|
||||
@@ -759,7 +799,7 @@ class PageInfo:
|
||||
|
||||
@property
|
||||
def has_vector(self) -> bool:
|
||||
return self._has_vector
|
||||
return bool(self._has_vector)
|
||||
|
||||
@property
|
||||
def width_inches(self) -> Decimal:
|
||||
@@ -837,6 +877,9 @@ class PageInfo:
|
||||
)
|
||||
|
||||
|
||||
DEFAULT_EXECUTOR = SerialExecutor()
|
||||
|
||||
|
||||
class PdfInfo:
|
||||
"""Get summary information about a PDF"""
|
||||
|
||||
@@ -848,13 +891,13 @@ class PdfInfo:
|
||||
progbar: bool = False,
|
||||
max_workers: int = None,
|
||||
check_pages=None,
|
||||
executor: Executor = SerialExecutor(),
|
||||
executor: Executor = DEFAULT_EXECUTOR,
|
||||
):
|
||||
self._infile = infile
|
||||
if check_pages is None:
|
||||
check_pages = range(0, 1_000_000_000)
|
||||
|
||||
with pikepdf.open(infile) as pdf:
|
||||
with Pdf.open(infile) as pdf:
|
||||
if pdf.is_encrypted:
|
||||
raise EncryptedPdfError() # Triggered by encryption with empty passwd
|
||||
self._pages = _pdf_pageinfo_concurrent(
|
||||
|
||||
@@ -135,7 +135,7 @@ class LTStateAwareChar(LTChar):
|
||||
return self._text
|
||||
|
||||
def __repr__(self):
|
||||
return '<%s %s matrix=%s rendermode=%r font=%r adv=%s text=%r>' % (
|
||||
return '<{} {} matrix={} rendermode={!r} font={!r} adv={} text={!r}>'.format(
|
||||
self.__class__.__name__,
|
||||
bbox2str(self.bbox),
|
||||
matrix2str(self.matrix),
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
|
||||
from abc import ABC, abstractmethod, abstractstaticmethod
|
||||
from abc import ABC, abstractmethod
|
||||
from argparse import ArgumentParser, Namespace
|
||||
from collections import namedtuple
|
||||
from logging import Handler
|
||||
@@ -197,7 +197,7 @@ def rasterize_pdf_page(
|
||||
|
||||
|
||||
@hookspec(firstresult=True)
|
||||
def filter_ocr_image(page: 'PageContext', image: 'Image') -> 'Image':
|
||||
def filter_ocr_image(page: 'PageContext', image: 'Image.Image') -> 'Image.Image':
|
||||
"""Called to filter the image before it is sent to OCR.
|
||||
|
||||
This is the image that OCR sees, not what the user sees when they view the
|
||||
@@ -325,11 +325,13 @@ class OcrEngine(ABC):
|
||||
Tesseract OCR.
|
||||
"""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def version() -> str:
|
||||
"""Returns the version of the OCR engine."""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def creator_tag(options: Namespace) -> str:
|
||||
"""Returns the creator tag to identify this software's role in creating the PDF.
|
||||
|
||||
@@ -349,24 +351,28 @@ class OcrEngine(ABC):
|
||||
to the user, usually in an error message.
|
||||
"""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def languages(options: Namespace) -> AbstractSet[str]:
|
||||
"""Returns the set of all languages that are supported by the engine.
|
||||
|
||||
Languages are typically given in 3-letter ISO 3166-1 codes, but actually
|
||||
can be any value understood by the OCR engine."""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def get_orientation(input_file: Path, options: Namespace) -> OrientationConfidence:
|
||||
"""Returns the orientation of the image."""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def generate_hocr(
|
||||
input_file: Path, output_hocr: Path, output_text: Path, options: Namespace
|
||||
) -> None:
|
||||
"""Called to produce a hOCR file and sidecar text file."""
|
||||
|
||||
@abstractstaticmethod
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def generate_pdf(
|
||||
input_file: Path, output_pdf: Path, output_text: Path, options: Namespace
|
||||
) -> None:
|
||||
|
||||
@@ -15,7 +15,6 @@ from collections.abc import Mapping
|
||||
from contextlib import suppress
|
||||
from distutils.version import LooseVersion, Version
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from subprocess import PIPE, STDOUT, CalledProcessError, CompletedProcess, Popen
|
||||
from subprocess import run as subprocess_run
|
||||
from typing import Callable, Optional, Type, Union
|
||||
@@ -27,7 +26,9 @@ from ocrmypdf.exceptions import MissingDependencyError
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run(args, *, env=None, logs_errors_to_stdout=False, **kwargs):
|
||||
def run(
|
||||
args, *, env=None, logs_errors_to_stdout: bool = False, **kwargs
|
||||
) -> CompletedProcess:
|
||||
"""Wrapper around :py:func:`subprocess.run`
|
||||
|
||||
The main purpose of this wrapper is to log subprocess output in an orderly
|
||||
@@ -65,7 +66,9 @@ def run(args, *, env=None, logs_errors_to_stdout=False, **kwargs):
|
||||
return proc
|
||||
|
||||
|
||||
def run_polling_stderr(args, *, callback, check=False, env=None, **kwargs):
|
||||
def run_polling_stderr(
|
||||
args, *, callback: Callable[[str], None], check: bool = False, env=None, **kwargs
|
||||
) -> CompletedProcess:
|
||||
"""Run a process like ``ocrmypdf.subprocess.run``, and poll stderr.
|
||||
|
||||
Every line of produced by stderr will be forwarded to the callback function.
|
||||
@@ -83,6 +86,8 @@ def run_polling_stderr(args, *, callback, check=False, env=None, **kwargs):
|
||||
with Popen(args, env=env, **kwargs) as proc:
|
||||
lines = []
|
||||
while proc.poll() is None:
|
||||
if proc.stderr is None:
|
||||
continue
|
||||
for msg in iter(proc.stderr.readline, ''):
|
||||
if process_log.isEnabledFor(logging.DEBUG):
|
||||
process_log.debug(msg.strip())
|
||||
@@ -102,7 +107,7 @@ def _fix_process_args(args, env, kwargs):
|
||||
env = os.environ
|
||||
|
||||
# Search in spoof path if necessary
|
||||
program = args[0]
|
||||
program = str(args[0])
|
||||
|
||||
if os.name == 'nt':
|
||||
from ocrmypdf.subprocess._windows import fix_windows_args
|
||||
|
||||
@@ -9,9 +9,9 @@ import os
|
||||
import shutil
|
||||
import sys
|
||||
from distutils.version import LooseVersion
|
||||
from itertools import chain, filterfalse
|
||||
from itertools import chain
|
||||
from pathlib import Path
|
||||
from typing import Any, Callable, Iterator, Optional, Tuple, TypeVar, cast
|
||||
from typing import Any, Callable, Iterable, Iterator, Set, Tuple, TypeVar
|
||||
|
||||
try:
|
||||
import winreg
|
||||
@@ -113,7 +113,7 @@ SHIMS = [
|
||||
]
|
||||
|
||||
|
||||
def fix_windows_args(program, args, env):
|
||||
def fix_windows_args(program: str, args, env):
|
||||
"""Adjust our desired program and command line arguments for use on Windows"""
|
||||
|
||||
if sys.version_info < (3, 8):
|
||||
@@ -137,14 +137,12 @@ def fix_windows_args(program, args, env):
|
||||
return args
|
||||
|
||||
|
||||
def unique_everseen(iterable, key=None):
|
||||
"List unique elements, preserving order. Remember all elements ever seen."
|
||||
def unique_everseen(iterable: Iterable[T], key: Callable[[T], T]) -> Iterator[T]:
|
||||
"List unique elements, preserving order."
|
||||
# unique_everseen('AAAABBBCCDAABBB') --> A B C D
|
||||
# unique_everseen('ABBCcAD', str.lower) --> A B C D
|
||||
seen = set()
|
||||
seen: Set[T] = set()
|
||||
seen_add = seen.add
|
||||
if key is None:
|
||||
key = lambda x: x
|
||||
for element in iterable:
|
||||
k = key(element)
|
||||
if k not in seen:
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.h7hsz1g7/000001_ocr.png"; bbox 0 0 1000 800; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.zi7wmyqr/000001_ocr.png"; bbox 0 0 1000 800; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 296 96 704 504">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 296 96 704 504">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 296 96 704 504; baseline 0 296; x_size 169.33333; x_descenders 42.333332; x_ascenders 42.333336">
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.tgp04npj/000001_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.idkfgigs/000001_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 582 131 1968 303">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 582 131 1968 303">
|
||||
<span class='ocr_header' id='line_1_1' title="bbox 882 131 1657 217; baseline 0.001 -17; x_size 85; x_descenders 16; x_ascenders 19">
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.tgp04npj/000002_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.idkfgigs/000002_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 582 131 1968 303">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 582 131 1968 303">
|
||||
<span class='ocr_header' id='line_1_1' title="bbox 882 131 1657 217; baseline 0.001 -17; x_size 85; x_descenders 16; x_ascenders 19">
|
||||
|
||||
BIN
Binary file not shown.
+3
-3
@@ -103,7 +103,7 @@ ERASE, REPEAT, PLAY/STOP, or LOCATE.
|
||||
|
||||
© Will sync to standard LinnDrum or Linn 9000 sync tone.
|
||||
|
||||
® Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation.
|
||||
© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation.
|
||||
* TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second,
|
||||
|
||||
(even drop frame!)
|
||||
@@ -115,9 +115,9 @@ on the TAP TEMPO button.
|
||||
¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired.
|
||||
¢ Any TIME SIGNATURE may be used, and may be changed within a song.
|
||||
|
||||
nn
|
||||
|
||||
linn
|
||||
Linn Electronics, Inc.
|
||||
|
||||
18720 Oxnard Street, Tarzana, CA 91356
|
||||
(818) 708-8131 TELEX #298949 LINN UR
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.tgp04npj/000003_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.idkfgigs/000003_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 582 131 1968 303">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 582 131 1968 303">
|
||||
<span class='ocr_header' id='line_1_1' title="bbox 882 131 1657 217; baseline 0.001 -17; x_size 85; x_descenders 16; x_ascenders 19">
|
||||
|
||||
BIN
Binary file not shown.
+82
-87
@@ -1,128 +1,123 @@
|
||||
2A NNI‘I 6F6867# XATALL IE18-80L (818)
|
||||
The LinnSequencer
|
||||
32 Track MIDI Sequence Recorder
|
||||
|
||||
9SEI6 VO “BUBZIRY, “J0aNS PIPUXO OZLEI
|
||||
“Uy ‘soTUOMOI,q UUrT
|
||||
The LinnSequencer is a state-of-the-art composition and performance tool for the professional musician. It is
|
||||
|
||||
uut]
|
||||
extremely powerful, yet amazingly simple to learn and use. It’s many remarkable features include:
|
||||
|
||||
“‘SUOS B UIJIM pasueyo oq ABU pue ‘posn oq AWW AYN IVNOIS AWLL AUV
|
||||
“parlsop Jr SUOTIISUBI} YIOOUIS YIM “BoueNbas eB OJUI pourtueIZOId 9q ABU SFONWHO OdINAL e
|
||||
¢ Operation is similar to multi-track tape recorder with PLAY, STOP, RECORD, FAST
|
||||
FORWARD, REWIND, and LOCATE controls.
|
||||
|
||||
‘uonng OdNAL dV L 9) uO
|
||||
e Each of the 100 sequences contains 32 simultaneous, polyphonic tracks. Each track may
|
||||
be assigned to one of 16 MIDI channels. Simultaneously plays up to 16 polyphonic
|
||||
|
||||
sojou Jayienb Suiddy} Aq 10 ‘syUSTIOIOUI oINUTIAI-J8g-Jesg & JO sys} UL ofquisn(pe ‘ATTeouIAUINU paiajus oq ABU OdINALL e
|
||||
synthesizers!
|
||||
|
||||
(jouer doup u3a9)
|
||||
¢ Ultra-fast 3%” disk drive stores complex songs in seconds and holds over 110,000 notes
|
||||
|
||||
“puooes Jed souely O€ 10 “SZ “pz 18 [LVAG-MAd-SHN VU 10 ALOANIWAAd-SLVAd U! patyoeds aq kewl OAL «
|
||||
‘uoTe1odo [SVx JO} Aj[eusoyUT JoyndUIOd 11g 9] 98108 ZHI 8g ‘poeds-ysry Bann soz] e
|
||||
per disk!
|
||||
|
||||
"9U0} DUAS 0006 UUL] Jo wNIqUUr] prepue}s 0} OUAS [ITAA ©
|
||||
¢ One or all tracks may be TRANSPOSED at the touch of a key.
|
||||
e Exclusive real-time ERASE function makes editing FAST.
|
||||
* Exclusive REPEAT function automatically repeats any held notes at a pre-selected
|
||||
|
||||
“ONYBA 9}OU poloapes Aue Je sas—nd jndyno 07 pewureigold 3q ACW SL Ad LNO YADONAL OML
|
||||
rhythmic value.
|
||||
|
||||
"ALVOOT 10 GOLS/AV 1d ‘LWddad “ASV
|
||||
¢ TIMING CORRECTION works during playback and operates without ‘chopping’ notes.
|
||||
|
||||
SUIpNpoUr ‘suOTIOUN] posn A[UOUILUOS 94] JO AUBUT [O1]UOD AJ9]OWIAI 0} PousIsse oq ACUI ST AdNI HOLIMSLOO OME «
|
||||
“SUIPIONAI I[IYM P2sesd JOU Iv $3}OU BUTISIXO—ZUIPIOIA SATON.ASOP-UON
|
||||
¢ Optional SMPTE time code synchronization.
|
||||
|
||||
‘suoneurldxa peuoyippe sdeydsip uowng g1TqH
|
||||
© Optional remote control.
|
||||
|
||||
oy] ‘pepsau JI ‘suoneiodo [ye yYsnosy] NOA sapins ApIespo Avfdsip QO] Joey Z7¢ 9y3—uoeIodo Urea] 0} Ased ‘aus «
|
||||
Recording a Sequence
|
||||
|
||||
jUorel]suowtap & IO} Aepol Jayeap uur’] INOA dag ‘dISHUL
|
||||
INOA 0} UONUS}]¥ PaplAIPUN INOA SUTJOASp ITY ps pue
|
||||
p1osai ‘asoduod no Jay 0} pausisap st 1s0uenbesuur’] oy)
|
||||
Aum Aposiooid $,Jeu], ‘SS9d0Id SATTBS1D OY} YIM SOIOJIOIUT
|
||||
yey) xo]dwWI0d Os dq JOA9U P[NoUsS osn NOA AZopOuYdE} oy
|
||||
To record a sequence, simply press RECORD and PLAY,
|
||||
then play your MIDI keyboard in time to the Sequencer’s
|
||||
click track. When the sequence loops back around to bar 1,
|
||||
you’ ll hear what you played—only all timing errors will be
|
||||
|
||||
ISTUMOIAUIO?) NOAA UOHISOdWIO)
|
||||
corrected! (Timing correction may be adjusted or defeated).
|
||||
|
||||
"NOSpr] B Oy ‘AONUTJUT yada 0} seq Maz Se] BY] Jas UdAd
|
||||
uvd NOA ‘palisap JJ ‘souanbes Mou ¥B OVUT sjied ou] [Te Adoo
|
||||
ATesrewO Ne WI) [IM ONOS ALVAAO JeyIe80} wey}
|
||||
,deyd,, 0} UOTOUNJ ONOS ALVA ou] asn usy] ‘saouanbes
|
||||
JENPIAIpUt UI (“949 ‘snJOYD ‘aS1OA) UOTIDIS JIseq Yes
|
||||
Pl0da1 OF ST ABM JOuIOUY “(812g 666 01 dn) ysnory) ABM
|
||||
Any additional notes played will be added into the track
|
||||
— existing notes are not erased while recording!
|
||||
|
||||
dU} [fe YORI] YORs p10991 0} ST SUOS B 9789I9 0} ABM SUG,
|
||||
FAST FORWARD, REWIND, and LOCATE controls
|
||||
may be used at any time to quickly access any location in
|
||||
your sequence for spot-recording. To overdub a new part,
|
||||
select a different track and start recording—while you
|
||||
record, the first track will play in perfect sync (unless you
|
||||
MUTE it, or SOLO another track). In this way, up to 32
|
||||
tracks may be overdubbed! All MIDI effects are recorded
|
||||
including pitch bend, modulation, velocity, aftertouch,
|
||||
sustain pedal, and program changes!
|
||||
|
||||
SUOS & SUTVAID
|
||||
Editing
|
||||
|
||||
*suoT}oes poJUBMUN
|
||||
To erase a wrong note, simply hold ERASE and press
|
||||
the note to be erased just before it plays in the sequence—
|
||||
when played back, it will be gone. Notes may also be
|
||||
|
||||
SAOUIOI 0} ABM SWS dU} SoyeIodo SUV ALATAaG
|
||||
added, erased, or changed using the SINGLE STEP func-
|
||||
tion. To overdub notes at specific points within a sequence,
|
||||
|
||||
“OBPLIq dy} PUB SNIOY PUOdAS dT]] Ud9MIAQ SIDA ISI
|
||||
Additional Features
|
||||
|
||||
ay) Jo Adoo B JJasuT WYSE NOAA ‘afdwexs 10.f ‘UO JUSIN]JIP
|
||||
simply use LOCATE, FAST FORWARD, or REWIND to
|
||||
find the desired bar number, then start recording.
|
||||
|
||||
B IO aouaNbas sues OY} UI—JOY OUP 0} UOTIEIO] 9UO WOT]
|
||||
$1Bq JAOUI OF NOA sMOTIe WOTIOUNS AdOO/IMASNI OULL
|
||||
The INSERT/COPY function allows you to move bars
|
||||
from one location to another—in the same sequence or a
|
||||
different one. For example, you might insert a copy of the
|
||||
first verse between the second chorus and the bridge.
|
||||
DELETE BARS operates the same way to remove
|
||||
unwanted sections,
|
||||
|
||||
‘SUIPIONAI JIVIS Udy) “OQuINU eq porisop ay} puy
|
||||
Creating a Song
|
||||
|
||||
0} CNIMAY 10 ‘CYVM Od LSWA “AEVOOT esn Apduns
|
||||
One way to create a song is to record each track all the
|
||||
way through (up to 999 bars). Another way is to record
|
||||
each basic section (verse, chorus, etc.) in individual
|
||||
sequences, then use the CREATE SONG function to “chain”
|
||||
them together. CREATE SONG will then automatically
|
||||
copy all the parts into a new sequence. If desired, you can
|
||||
even set the last few bars to repeat infinitely, for a fadeout.
|
||||
|
||||
sainjeay [PUOHIPPY
|
||||
Composition Without Compromise
|
||||
|
||||
‘gouanbas & UTYIIM s]UTOd a1y1dads 3¥ $9100 QnPIOAO OL "UOT}
|
||||
-ouns dALLS ATONIS 24) Suisn pasueyo Jo ‘pasesa ‘pappe
|
||||
aq osye ABUT S9]ON ‘U0 9q ]IIM 1 “yoeq podeyd uayM
|
||||
—aouanbas oy] ul skeyd 71 a10J9q Isnf posers oq 0} d]0U ayy
|
||||
ssaid pue ASvwug ploy Aydunis ‘jou Suomm & aseso OL
|
||||
The technology you use should never be so complex that
|
||||
it interferes with the creative process. That’s precisely why
|
||||
the LinnSequencer is designed to let you compose, record
|
||||
and edit while devoting your undivided attention to your
|
||||
music. See your Linn dealer today for a demonstration!
|
||||
|
||||
sunipa
|
||||
* Simple, easy to learn operation—the 32 character LCD display clearly guides you through all operations. If needed, the
|
||||
|
||||
jsesdueyo ureisoid pue ‘fepod ureysns
|
||||
‘yonoplalje ‘AWOOTOA ‘UOTyeTNpow ‘pusg youd Surpnyour
|
||||
pep10del are $199JJ2 TCTIN [WV iPeqqnpseao aq Aeur syoen
|
||||
Ze 07 dn ‘Kem sie Uy *(foeI} JOyOUR OJOS 10 ALLAN
|
||||
NOA ssofum) duAS yOaysod ul Avy [[IM Yow] ISI 93 “prooar
|
||||
NOA 3[IYM—SUIPIOIA LIBIS PU YORI) TUdIOTJIP B JOaTas
|
||||
*y1ed MOU B QNPIsA0 OL, “SuIps0daJ-jods 10} aouanbes mno0k
|
||||
UI UOHBIO] Aue ssad0e ATYOIND 0} owt} Aue ye pasn aq AvUE
|
||||
SJONUOD FLIVOOT pur ‘ANIMA ‘CYVMaYOd LSVd
|
||||
{SUIPIOSAI {IY posesa JOU se So]OU SuTsTXO—
|
||||
yous} 3U} OUT poppe aq JIM poteyd sajou yeuonippe Auy
|
||||
HELP button displays additional explanations.
|
||||
|
||||
*(povesjap 10 poysn{pe oq ABW UOTIIII0D BUTUTT]) j{paqoeLI09
|
||||
* Non-destructive recording—existing notes are not erased while recording.
|
||||
¢ Two FOOTSWITCH INPUTS may be assigned to remotely control many of the commonly used functions, including
|
||||
|
||||
2q ][IM S1OLIe Sur [fe ATUO—patey]d nod Jey Jedy ]],NOA
|
||||
ERASE, REPEAT, PLAY/STOP, or LOCATE.
|
||||
|
||||
‘] req 0] punose yoeq sdoo] sduanbas ay] Udy AA “YOu Yor
|
||||
¢ Iwo TRIGGER OUTPUTS may be programmed to output pulses at any selected note value.
|
||||
|
||||
§,sa0uaNbas at} O] SUIT) UI preogday [IW] INO Avy usy3
|
||||
AV'1d pue (YOON ssoid Ayduus ‘aousnbes & p1o09es OF,
|
||||
© Will sync to standard LinnDrum or Linn 9000 sync tone.
|
||||
|
||||
g0uaNbas & SUIP10I0y]
|
||||
© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation.
|
||||
* TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second,
|
||||
|
||||
‘JONWOD s}JouNaI TeuONdGO e
|
||||
(even drop frame!)
|
||||
|
||||
"UOTJEZIUOIYUAS OPOS UIT} FLAWS [euondo e
|
||||
¢ TEMPO may be entered numerically, adjustable in tenths of a Beat-Per-Minute increments, or by tapping quarter notes
|
||||
|
||||
‘sou .sulddoys, noyyM sayelodo pue yoegdvyd ZuLINp S¥IOM NOLLOANNYOO ONIWILL e
|
||||
on the TAP TEMPO button.
|
||||
|
||||
‘onqea ory AY
|
||||
¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired.
|
||||
¢ Any TIME SIGNATURE may be used, and may be changed within a song.
|
||||
|
||||
pojoojes-oid & ye sajou pyoy Aue syeadas ATTeONewWO Ne UOTOUNS [WAdAY OAISNOX e
|
||||
‘LSVJ SUnIpS soyeu UOTOUN ASV UA OUlN-[eal SAISNIOXY e
|
||||
‘Koy B JO YONO} 941 12 CASOdSNVALL 0g ABU Syde] [Te 10 9UC e
|
||||
linn
|
||||
Linn Electronics, Inc.
|
||||
|
||||
i ASIP Jed
|
||||
|
||||
S9}0U OOO‘OTT JOA SpfOy puv SpUOdeS UT SBUOS Xa[AUIOD So10}S DALIP YSIP , 74 € ISCJ-CNIN
|
||||
|
||||
jSIOZISOUJUAS
|
||||
|
||||
stuoydAjod of 0} dn skeyd A[snoourynuls ‘spouueYd [IW 9T JO duo 0} pousisse oq
|
||||
ABUL YORI] YOR ‘syous) oruoydAjod ‘snoouelnurs 7¢ SuTeJUOS ssouUaNbas QO] OY} JO YORA e
|
||||
|
||||
‘SJONUOS ATWOOT pur ‘GNIMAY ‘GaVM OA
|
||||
LSVd ‘GYOOde AOLS ‘AV Td YIM Jopsocas ade} Yowsj-N[NU O} eps st UOTLISdO @
|
||||
LOPNOUT SaINjeoy s[quyIeUlss AUB S.JJ ‘OSN pue UIes] 0} o[duns A[suIzeUe JOA ‘PnJsomod APOUIOITXO
|
||||
St 1] “UeIOIsNUL feUOIssajoid oY} 10 JOO} soUBULIOJIJAd pue UOTIsOduIOS 11e-dY1-JO-9}e)s B SI IONUANbDaguUT] ay
|
||||
|
||||
JOps1odady soUINbIS [GTI YVAL ZE
|
||||
Jgouanbaguury oy
|
||||
18720 Oxnard Street, Tarzana, CA 91356
|
||||
(818) 708-8131 TELEX #298949 LINN UR
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.tgp04npj/000004_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.idkfgigs/000004_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 582 131 1968 303">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 582 131 1968 303">
|
||||
<span class='ocr_header' id='line_1_1' title="bbox 882 131 1657 217; baseline 0.001 -17; x_size 85; x_descenders 16; x_ascenders 19">
|
||||
|
||||
BIN
Binary file not shown.
+82
-83
@@ -1,124 +1,123 @@
|
||||
2A NNI‘I 6F6867# XATALL IE18-80L (818)
|
||||
The LinnSequencer
|
||||
32 Track MIDI Sequence Recorder
|
||||
|
||||
9SEI6 VO “BUBZIRY, “J0aNS PIPUXO OZLEI
|
||||
“Uy ‘soTUOMOI,q UUrT
|
||||
The LinnSequencer is a state-of-the-art composition and performance tool for the professional musician. It is
|
||||
|
||||
uu
|
||||
extremely powerful, yet amazingly simple to learn and use. It’s many remarkable features include:
|
||||
|
||||
“‘SUOS B UIJIM pasueyo oq ABU pue ‘posn oq AWW AYN IVNOIS AWLL AUV
|
||||
“parlsop Jr SUOTIISUBI} YIOOUIS YIM “BoueNbas eB OJUI pourtueIZOId 9q ABU SFONWHO OdINAL e
|
||||
¢ Operation is similar to multi-track tape recorder with PLAY, STOP, RECORD, FAST
|
||||
FORWARD, REWIND, and LOCATE controls.
|
||||
|
||||
‘uonng OdNAL dV L 9) uO
|
||||
e Each of the 100 sequences contains 32 simultaneous, polyphonic tracks. Each track may
|
||||
be assigned to one of 16 MIDI channels. Simultaneously plays up to 16 polyphonic
|
||||
|
||||
sojou Jayienb Suiddy} Aq 10 ‘syUSTIOIOUI oINUTIAI-J8g-Jesg & JO sys} UL ofquisn(pe ‘ATTeouIAUINU paiajus oq ABU OdINALL e
|
||||
synthesizers!
|
||||
|
||||
(jouer doup u3a9)
|
||||
¢ Ultra-fast 3%” disk drive stores complex songs in seconds and holds over 110,000 notes
|
||||
|
||||
“puooes Jed souely O€ 10 “SZ “pz 18 [LVAG-MAd-SHN VU 10 ALOANIWAAd-SLVAd U! patyoeds aq kewl OAL «
|
||||
‘uoTe1odo [SVx JO} Aj[eusoyUT JoyndUIOd 11g 9] 98108 ZHI 8g ‘poeds-ysry Bann soz] e
|
||||
per disk!
|
||||
|
||||
"9U0} DUAS 0006 UUL] Jo wNIqUUr] prepue}s 0} OUAS [ITAA ©
|
||||
¢ One or all tracks may be TRANSPOSED at the touch of a key.
|
||||
e Exclusive real-time ERASE function makes editing FAST.
|
||||
* Exclusive REPEAT function automatically repeats any held notes at a pre-selected
|
||||
|
||||
“ONYBA 9}OU poloapes Aue Je sas—nd jndyno 07 pewureigold 3q ACW SL Ad LNO YADONAL OML
|
||||
rhythmic value.
|
||||
|
||||
"ALVOOT 10 GOLS/AV 1d ‘LWddad “ASV
|
||||
¢ TIMING CORRECTION works during playback and operates without ‘chopping’ notes.
|
||||
|
||||
SUIpNpoUr ‘suOTIOUN] posn A[UOUILUOS 94] JO AUBUT [O1]UOD AJ9]OWIAI 0} PousIsse oq ACUI ST AdNI HOLIMSLOO OME «
|
||||
“SUIPIONAI I[IYM P2sesd JOU Iv $3}OU BUTISIXO—ZUIPIOIA SATON.ASOP-UON
|
||||
¢ Optional SMPTE time code synchronization.
|
||||
|
||||
‘suoneurldxa peuoyippe sdeydsip uowng g1TqH
|
||||
© Optional remote control.
|
||||
|
||||
oy] ‘pepsau JI ‘suoneiodo [ye yYsnosy] NOA sapins ApIespo Avfdsip QO] Joey Z7¢ 9y3—uoeIodo Urea] 0} Ased ‘aus «
|
||||
Recording a Sequence
|
||||
|
||||
jUorel]suowtap & IO} Aepol Jayeap uur’] INOA dag ‘dISHUL
|
||||
INOA 0} UONUS}]¥ PaplAIPUN INOA SUTJOASp ITY ps pue
|
||||
p1osai ‘asoduod no Jay 0} pausisap st 1s0uenbesuur’] oy)
|
||||
Aum Aposiooid $,Jeu], ‘SS9d0Id SATTBS1D OY} YIM SOIOJIOIUT
|
||||
yey) xo]dwWI0d Os dq JOA9U P[NoUsS osn NOA AZopOuYdE} oy
|
||||
To record a sequence, simply press RECORD and PLAY,
|
||||
then play your MIDI keyboard in time to the Sequencer’s
|
||||
click track. When the sequence loops back around to bar 1,
|
||||
you’ ll hear what you played—only all timing errors will be
|
||||
|
||||
ISTUMOIAUIO?) NOAA UOHISOdWIO)
|
||||
corrected! (Timing correction may be adjusted or defeated).
|
||||
|
||||
"NOSpr] B Oy ‘AONUTJUT yada 0} seq Maz Se] BY] Jas UdAd
|
||||
uvd NOA ‘palisap JJ ‘souanbes Mou ¥B OVUT sjied ou] [Te Adoo
|
||||
ATesrewO Ne WI) [IM ONOS ALVAAO JeyIe80} wey}
|
||||
,deyd,, 0} UOTOUNJ ONOS ALVA ou] asn usy] ‘saouanbes
|
||||
JENPIAIpUt UI (“949 ‘snJOYD ‘aS1OA) UOTIDIS JIseq Yes
|
||||
Pl0da1 OF ST ABM JOuIOUY “(812g 666 01 dn) ysnory) ABM
|
||||
Any additional notes played will be added into the track
|
||||
— existing notes are not erased while recording!
|
||||
|
||||
dU} [fe YORI] YORs p10991 0} ST SUOS B 9789I9 0} ABM SUG,
|
||||
FAST FORWARD, REWIND, and LOCATE controls
|
||||
may be used at any time to quickly access any location in
|
||||
your sequence for spot-recording. To overdub a new part,
|
||||
select a different track and start recording—while you
|
||||
record, the first track will play in perfect sync (unless you
|
||||
MUTE it, or SOLO another track). In this way, up to 32
|
||||
tracks may be overdubbed! All MIDI effects are recorded
|
||||
including pitch bend, modulation, velocity, aftertouch,
|
||||
sustain pedal, and program changes!
|
||||
|
||||
SUOS & SUTVAID
|
||||
Editing
|
||||
|
||||
*suoT}oes poJUBMUN
|
||||
To erase a wrong note, simply hold ERASE and press
|
||||
the note to be erased just before it plays in the sequence—
|
||||
when played back, it will be gone. Notes may also be
|
||||
|
||||
SAOUIOI 0} ABM SWS dU} SoyeIodo SUV ALATAaG
|
||||
added, erased, or changed using the SINGLE STEP func-
|
||||
tion. To overdub notes at specific points within a sequence,
|
||||
|
||||
“OBPLIq dy} PUB SNIOY PUOdAS dT]] Ud9MIAQ SIDA ISI
|
||||
Additional Features
|
||||
|
||||
ay) Jo Adoo B JJasuT WYSE NOAA ‘afdwexs 10.f ‘UO JUSIN]JIP
|
||||
simply use LOCATE, FAST FORWARD, or REWIND to
|
||||
find the desired bar number, then start recording.
|
||||
|
||||
B IO aouaNbas sues OY} UI—JOY OUP 0} UOTIEIO] 9UO WOT]
|
||||
$1Bq JAOUI OF NOA sMOTIe WOTIOUNS AdOO/IMASNI OULL
|
||||
The INSERT/COPY function allows you to move bars
|
||||
from one location to another—in the same sequence or a
|
||||
different one. For example, you might insert a copy of the
|
||||
first verse between the second chorus and the bridge.
|
||||
DELETE BARS operates the same way to remove
|
||||
unwanted sections,
|
||||
|
||||
‘SUIPIONAI JIVIS Udy) “OQuINU eq porisop ay} puy
|
||||
Creating a Song
|
||||
|
||||
0} CNIMAY 10 ‘CYVM Od LSWA “AEVOOT esn Apduns
|
||||
One way to create a song is to record each track all the
|
||||
way through (up to 999 bars). Another way is to record
|
||||
each basic section (verse, chorus, etc.) in individual
|
||||
sequences, then use the CREATE SONG function to “chain”
|
||||
them together. CREATE SONG will then automatically
|
||||
copy all the parts into a new sequence. If desired, you can
|
||||
even set the last few bars to repeat infinitely, for a fadeout.
|
||||
|
||||
sainjeay [PUOHIPPY
|
||||
Composition Without Compromise
|
||||
|
||||
‘gouanbas & UTYIIM s]UTOd a1y1dads 3¥ $9100 QnPIOAO OL "UOT}
|
||||
-ouns dALLS ATONIS 24) Suisn pasueyo Jo ‘pasesa ‘pappe
|
||||
aq osye ABUT S9]ON ‘U0 9q ]IIM 1 “yoeq podeyd uayM
|
||||
—aouanbas oy] ul skeyd 71 a10J9q Isnf posers oq 0} d]0U ayy
|
||||
ssaid pue ASvwug ploy Aydunis ‘jou Suomm & aseso OL
|
||||
The technology you use should never be so complex that
|
||||
it interferes with the creative process. That’s precisely why
|
||||
the LinnSequencer is designed to let you compose, record
|
||||
and edit while devoting your undivided attention to your
|
||||
music. See your Linn dealer today for a demonstration!
|
||||
|
||||
sunipa
|
||||
* Simple, easy to learn operation—the 32 character LCD display clearly guides you through all operations. If needed, the
|
||||
|
||||
jsesdueyo ureisoid pue ‘fepod ureysns
|
||||
‘yonoplalje ‘AWOOTOA ‘UOTyeTNpow ‘pusg youd Surpnyour
|
||||
pep10del are $199JJ2 TCTIN [WV iPeqqnpseao aq Aeur syoen
|
||||
Ze 07 dn ‘Kem sie Uy *(foeI} JOyOUR OJOS 10 ALLAN
|
||||
NOA ssofum) duAS yOaysod ul Avy [[IM Yow] ISI 93 “prooar
|
||||
NOA 3[IYM—SUIPIOIA LIBIS PU YORI) TUdIOTJIP B JOaTas
|
||||
*y1ed MOU B QNPIsA0 OL, “SuIps0daJ-jods 10} aouanbes mno0k
|
||||
UI UOHBIO] Aue ssad0e ATYOIND 0} owt} Aue ye pasn aq AvUE
|
||||
SJONUOD FLIVOOT pur ‘ANIMA ‘CYVMaYOd LSVd
|
||||
{SUIPIOSAI {IY posesa JOU se So]OU SuTsTXO—
|
||||
yous} 3U} OUT poppe aq JIM poteyd sajou yeuonippe Auy
|
||||
*(povesjap 10 poysn{pe oq ABW UOTIIII0D BUTUTT]) j{paqoeLI09
|
||||
2q ][IM S1OLIe Sur [fe ATUO—patey]d nod Jey Jedy ]],NOA
|
||||
‘] req 0] punose yoeq sdoo] sduanbas ay] Udy AA “YOu Yor
|
||||
§,sa0uaNbas at} O] SUIT) UI preogday [IW] INO Avy usy3
|
||||
AV'1d pue (YOON ssoid Ayduus ‘aousnbes & p1o09es OF,
|
||||
HELP button displays additional explanations.
|
||||
|
||||
g0uaNbas & SUIP10I0y]
|
||||
* Non-destructive recording—existing notes are not erased while recording.
|
||||
¢ Two FOOTSWITCH INPUTS may be assigned to remotely control many of the commonly used functions, including
|
||||
|
||||
‘JONWOD s}JouNaI TeuONdGO e
|
||||
ERASE, REPEAT, PLAY/STOP, or LOCATE.
|
||||
|
||||
"UOTJEZIUOIYUAS OPOS UIT} FLAWS [euondo e
|
||||
¢ Iwo TRIGGER OUTPUTS may be programmed to output pulses at any selected note value.
|
||||
|
||||
‘sou .sulddoys, noyyM sayelodo pue yoegdvyd ZuLINp S¥IOM NOLLOANNYOO ONIWILL e
|
||||
© Will sync to standard LinnDrum or Linn 9000 sync tone.
|
||||
|
||||
‘onqea ory AY
|
||||
© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation.
|
||||
* TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second,
|
||||
|
||||
pojoojes-oid & ye sajou pyoy Aue syeadas ATTeONewWO Ne UOTOUNS [WAdAY OAISNOX e
|
||||
‘LSVJ SUnIpS soyeu UOTOUN ASV UA OUlN-[eal SAISNIOXY e
|
||||
‘Koy B JO YONO} 941 12 CASOdSNVALL 0g ABU Syde] [Te 10 9UC e
|
||||
(even drop frame!)
|
||||
|
||||
i ASIP Jed
|
||||
¢ TEMPO may be entered numerically, adjustable in tenths of a Beat-Per-Minute increments, or by tapping quarter notes
|
||||
|
||||
S9}0U OOO‘OTT JOA SpfOy puv SpUOdeS UT SBUOS Xa[AUIOD So10}S DALIP YSIP , 74 € ISCJ-CNIN
|
||||
on the TAP TEMPO button.
|
||||
|
||||
jSIOZISOUJUAS
|
||||
¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired.
|
||||
¢ Any TIME SIGNATURE may be used, and may be changed within a song.
|
||||
|
||||
stuoydAjod of 0} dn skeyd A[snoourynuls ‘spouueYd [IW 9T JO duo 0} pousisse oq
|
||||
ABUL YORI] YOR ‘syous) oruoydAjod ‘snoouelnurs 7¢ SuTeJUOS ssouUaNbas QO] OY} JO YORA e
|
||||
linn
|
||||
Linn Electronics, Inc.
|
||||
|
||||
‘SJONUOS ATWOOT pur ‘GNIMAY ‘GaVM OA
|
||||
LSVd ‘GYOOde AOLS ‘AV Td YIM Jopsocas ade} Yowsj-N[NU O} eps st UOTLISdO @
|
||||
LOPNOUT SaINjeoy s[quyIeUlss AUB S.JJ ‘OSN pue UIes] 0} o[duns A[suIzeUe JOA ‘PnJsomod APOUIOITXO
|
||||
St 1] “UeIOIsNUL feUOIssajoid oY} 10 JOO} soUBULIOJIJAd pue UOTIsOduIOS 11e-dY1-JO-9}e)s B SI IONUANbDaguUT] ay
|
||||
|
||||
JOps1odady soUINbIS [GTI YVAL ZE
|
||||
Jgouanbaguury oy
|
||||
18720 Oxnard Street, Tarzana, CA 91356
|
||||
(818) 708-8131 TELEX #298949 LINN UR
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.sly7uqzv/000001_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.suvrek94/000001_ocr.png"; bbox 0 0 2550 3300; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 582 131 1968 303">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 582 131 1968 303">
|
||||
<span class='ocr_header' id='line_1_1' title="bbox 882 131 1657 217; baseline 0.001 -17; x_size 85; x_descenders 16; x_ascenders 19">
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
-1
@@ -1 +0,0 @@
|
||||
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
Portez ce vieux whisky au juge
|
||||
blond qui fume sur son Ile
|
||||
interieure, a cöte de l'alcöve
|
||||
ovoide, oU les büches se
|
||||
consument dans l'ätre, ce qui
|
||||
lui permet de penser & la
|
||||
caenogenese de |'etre dont il
|
||||
est question dans la cause
|
||||
ambigu& entendue a MoY, dans
|
||||
un capharnaüm qui, pense-t-il,
|
||||
diminue ca et la la qualite de son
|
||||
ceuvre.
|
||||
|
||||
BIN
Binary file not shown.
+34
-16
@@ -1,20 +1,38 @@
|
||||
Replacement of "creationism" with "intelligent design"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
120
|
||||
|
||||
|
||||
|
||||
—@— "Creation" and "creationist"
|
||||
—®@-— "Intelligent design"
|
||||
and "design proponent"
|
||||
|
||||
Word count
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
100 -
|
||||
Cc 80
|
||||
=
|
||||
©
|
||||
oO 60 —@— "Creation" and "creationist"
|
||||
5 —@— "Intelligent design"
|
||||
= and "design proponent"
|
||||
40 4
|
||||
20 -
|
||||
—@ ©
|
||||
0 e- T T T | rE ©
|
||||
3) 6) Ay AN y 9) oN
|
||||
a i
|
||||
\ oe a) \ YL S S
|
||||
3 ad Ss x x x. s?
|
||||
3 Ri oe a? ace Nc) os
|
||||
J we % si we oe e
|
||||
eS SS S S oe eS is”
|
||||
oe sO o Q Q Q Q
|
||||
|
||||
+373
-381
@@ -9,467 +9,459 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.6nqy9raf/000001_ocr.png"; bbox 0 0 1000 1520; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 122 99 848 146">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 122 99 848 146">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 122 99 848 146; baseline 0 -26; x_size 22; x_descenders 5; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_1' title='bbox 122 104 169 121; x_wconf 29'>4ist</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 177 103 291 125; x_wconf 54'>ConGREss,</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 300 105 308 146; x_wconf 46'>}</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 439 99 543 130; x_wconf 94'>SENATE.</span>
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 736 105 745 146; x_wconf 90'>{</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 753 103 788 120; x_wconf 94'>Ex.</span>
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 798 103 848 121; x_wconf 95'>Doc,</span>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.2q5c8v0m/000001_ocr.png"; bbox 0 0 1000 1520; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 126 101 547 145">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 126 101 547 145">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 126 101 547 125; baseline 0.005 -7; x_size 23; x_descenders 6; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_1' title='bbox 126 101 173 118; x_wconf 37'>41st</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 181 101 303 124; x_wconf 16'>CONGRESS;</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 329 123 331 125; x_wconf 42'>|</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 443 103 547 120; x_wconf 94'>SENATE.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_2' title="bbox 152 125 838 143; baseline -0.001 0; x_size 21.943821; x_descenders 4.94382; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 152 126 176 142; x_wconf 93'>3d</span>
|
||||
<span class='ocrx_word' id='word_1_9' title='bbox 185 126 260 143; x_wconf 88'>Session.</span>
|
||||
<span class='ocrx_word' id='word_1_10' title='bbox 767 125 802 142; x_wconf 86'>No.</span>
|
||||
<span class='ocrx_word' id='word_1_11' title='bbox 810 126 838 142; x_wconf 76'>25.</span>
|
||||
<span class='ocr_line' id='line_1_2' title="bbox 156 104 312 145; baseline 0.006 -5; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 156 124 180 140; x_wconf 89'>3d</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 189 124 264 141; x_wconf 91'>Session.</span>
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 304 104 312 145; x_wconf 52'>}</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_2' title="bbox 384 245 594 269">
|
||||
<p class='ocr_par' id='par_1_2' lang='eng' title="bbox 384 245 594 269">
|
||||
<span class='ocr_line' id='line_1_3' title="bbox 384 245 594 269; baseline 0 0; x_size 32.666668; x_descenders 8.166667; x_ascenders 8.166667">
|
||||
<span class='ocrx_word' id='word_1_12' title='bbox 384 245 594 269; x_wconf 94'>MESSAGE</span>
|
||||
<div class='ocr_carea' id='block_1_2' title="bbox 388 244 597 269">
|
||||
<p class='ocr_par' id='par_1_2' lang='eng' title="bbox 388 244 597 269">
|
||||
<span class='ocr_line' id='line_1_3' title="bbox 388 244 597 269; baseline 0.005 -1; x_size 32.400002; x_descenders 8.1000004; x_ascenders 8.1000004">
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 388 244 597 269; x_wconf 96'>MESSAGE</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 459 302 523 313">
|
||||
<p class='ocr_par' id='par_1_3' lang='eng' title="bbox 459 302 523 313">
|
||||
<span class='ocr_line' id='line_1_4' title="bbox 459 302 523 313; baseline 0 0; x_size 20; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_13' title='bbox 459 302 481 313; x_wconf 87'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_14' title='bbox 490 302 523 313; x_wconf 96'>THE</span>
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 462 302 526 313">
|
||||
<p class='ocr_par' id='par_1_3' lang='eng' title="bbox 462 302 526 313">
|
||||
<span class='ocr_line' id='line_1_4' title="bbox 462 302 526 313; baseline 0 0; x_size 20; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_9' title='bbox 462 302 484 313; x_wconf 87'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_10' title='bbox 493 302 526 313; x_wconf 96'>THE</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_4' title="bbox 148 338 839 375">
|
||||
<p class='ocr_par' id='par_1_4' lang='eng' title="bbox 148 338 839 375">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 148 338 839 375; baseline 0.003 -3; x_size 43.490196; x_descenders 10.872549; x_ascenders 10.872549">
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 148 339 358 372; x_wconf 96'>PRESIDENT</span>
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 379 339 422 371; x_wconf 95'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 444 338 518 371; x_wconf 96'>THE</span>
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 539 338 673 371; x_wconf 96'>UNITED</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 694 338 839 375; x_wconf 96'>STATES,</span>
|
||||
<div class='ocr_carea' id='block_1_4' title="bbox 151 337 842 377">
|
||||
<p class='ocr_par' id='par_1_4' lang='eng' title="bbox 151 337 842 377">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 151 337 842 377; baseline 0.009 -8; x_size 43.365078; x_descenders 10.841269; x_ascenders 10.841269">
|
||||
<span class='ocrx_word' id='word_1_11' title='bbox 151 337 361 370; x_wconf 96'>PRESIDENT</span>
|
||||
<span class='ocrx_word' id='word_1_12' title='bbox 382 338 425 370; x_wconf 96'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_13' title='bbox 447 338 521 371; x_wconf 96'>THE</span>
|
||||
<span class='ocrx_word' id='word_1_14' title='bbox 542 339 676 372; x_wconf 96'>UNITED</span>
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 697 340 842 377; x_wconf 95'>STATES,</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_5' title="bbox 423 406 563 417">
|
||||
<p class='ocr_par' id='par_1_5' lang='eng' title="bbox 423 406 563 417">
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 423 406 563 417; baseline 0 -1; x_size 20; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 423 406 563 417; x_wconf 95'>COMMUNICATING</span>
|
||||
<div class='ocr_carea' id='block_1_5' title="bbox 425 406 565 417">
|
||||
<p class='ocr_par' id='par_1_5' lang='eng' title="bbox 425 406 565 417">
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 425 406 565 417; baseline 0 -1; x_size 20; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 425 406 565 417; x_wconf 94'>COMMUNICATING</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_6' title="bbox 123 447 859 492">
|
||||
<p class='ocr_par' id='par_1_6' lang='eng' title="bbox 123 447 859 492">
|
||||
<span class='ocr_line' id='line_1_7' title="bbox 123 447 859 470; baseline 0.001 -6; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 123 447 141 465; x_wconf 95'>A</span>
|
||||
<span class='ocrx_word' id='word_1_22' title='bbox 147 452 189 469; x_wconf 95'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_23' title='bbox 193 447 215 469; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_24' title='bbox 220 447 329 469; x_wconf 96'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_25' title='bbox 335 447 369 468; x_wconf 95'>for</span>
|
||||
<span class='ocrx_word' id='word_1_26' title='bbox 374 447 401 464; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_27' title='bbox 410 447 492 464; x_wconf 96'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 497 449 555 464; x_wconf 79'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_29' title='bbox 563 447 585 469; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_30' title='bbox 590 447 617 464; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_31' title='bbox 628 447 692 465; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_32' title='bbox 700 447 758 465; x_wconf 93'>States</span>
|
||||
<span class='ocrx_word' id='word_1_33' title='bbox 766 448 785 464; x_wconf 93'>in</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 793 447 859 470; x_wconf 96'>Japan,</span>
|
||||
<div class='ocr_carea' id='block_1_6' title="bbox 125 445 861 494">
|
||||
<p class='ocr_par' id='par_1_6' lang='eng' title="bbox 125 445 861 494">
|
||||
<span class='ocr_line' id='line_1_7' title="bbox 125 445 861 472; baseline 0.008 -11; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 125 445 143 462; x_wconf 93'>A</span>
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 149 450 191 467; x_wconf 93'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 195 445 217 467; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 222 446 331 467; x_wconf 96'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 337 446 371 467; x_wconf 95'>for</span>
|
||||
<span class='ocrx_word' id='word_1_22' title='bbox 376 446 403 463; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_23' title='bbox 412 447 494 463; x_wconf 95'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_24' title='bbox 499 449 557 464; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_25' title='bbox 565 448 587 469; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_26' title='bbox 592 448 619 465; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_27' title='bbox 630 448 694 466; x_wconf 90'>United</span>
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 702 448 760 466; x_wconf 93'>States</span>
|
||||
<span class='ocrx_word' id='word_1_29' title='bbox 768 450 787 466; x_wconf 93'>in</span>
|
||||
<span class='ocrx_word' id='word_1_30' title='bbox 795 449 861 472; x_wconf 95'>Japan,</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_8' title="bbox 145 468 832 492; baseline 0 -6; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 145 470 213 486; x_wconf 96'>decreed</span>
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 220 470 256 487; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 263 469 321 487; x_wconf 95'>issued</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 329 469 351 490; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 359 469 386 486; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 393 468 474 486; x_wconf 96'>minister</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 480 469 502 491; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_42' title='bbox 507 470 533 487; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_43' title='bbox 544 469 608 487; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_44' title='bbox 616 470 674 487; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 680 470 700 487; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 708 470 746 487; x_wconf 96'>that</span>
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 753 472 832 492; x_wconf 83'>country.</span>
|
||||
<span class='ocr_line' id='line_1_8' title="bbox 147 468 834 494; baseline 0.006 -10; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_31' title='bbox 147 468 215 484; x_wconf 96'>decreed</span>
|
||||
<span class='ocrx_word' id='word_1_32' title='bbox 222 468 258 485; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_33' title='bbox 265 468 323 485; x_wconf 96'>issued</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 331 468 353 489; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 361 468 388 485; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 395 468 476 486; x_wconf 95'>minister</span>
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 482 469 504 491; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 509 470 535 487; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 546 470 610 487; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 618 471 676 488; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 682 471 702 488; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_42' title='bbox 710 471 748 488; x_wconf 95'>that</span>
|
||||
<span class='ocrx_word' id='word_1_43' title='bbox 755 474 834 494; x_wconf 77'>country.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_7' title="bbox 121 539 860 579">
|
||||
<p class='ocr_par' id='par_1_7' lang='eng' title="bbox 121 539 860 579">
|
||||
<span class='ocr_caption' id='line_1_9' title="bbox 121 539 860 579; baseline 0 -21; x_size 19; x_descenders 4; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 121 544 200 559; x_wconf 95'>JANUARY</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 206 544 229 562; x_wconf 85'>27,</span>
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 236 543 342 561; x_wconf 58'>1871,—Read,</span>
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 346 543 413 558; x_wconf 95'>referred</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 419 545 435 558; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_53' title='bbox 441 543 469 557; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 478 539 570 579; x_wconf 66'>Committee</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 581 547 601 557; x_wconf 96'>on</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 612 543 703 562; x_wconf 96'>Commerce,</span>
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 710 543 741 558; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 748 544 812 558; x_wconf 96'>ordered</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 817 545 834 558; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 840 544 860 558; x_wconf 96'>be</span>
|
||||
<div class='ocr_carea' id='block_1_7' title="bbox 122 539 861 579">
|
||||
<p class='ocr_par' id='par_1_7' lang='eng' title="bbox 122 539 861 579">
|
||||
<span class='ocr_caption' id='line_1_9' title="bbox 122 539 861 579; baseline 0.008 -24; x_size 18; x_descenders 4; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_44' title='bbox 122 541 201 556; x_wconf 81'>January</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 207 542 230 560; x_wconf 93'>27,</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 237 542 343 560; x_wconf 39'>1871,—Read,</span>
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 347 542 414 557; x_wconf 96'>referred</span>
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 420 544 436 557; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 442 543 470 557; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 479 539 571 579; x_wconf 66'>Committee</span>
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 582 548 602 558; x_wconf 93'>on</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 613 544 704 563; x_wconf 96'>Commerce,</span>
|
||||
<span class='ocrx_word' id='word_1_53' title='bbox 711 545 742 560; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 749 546 813 560; x_wconf 96'>ordered</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 818 547 835 560; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 841 546 861 560; x_wconf 96'>be</span>
|
||||
</span>
|
||||
<span class='ocr_caption' id='line_1_10' title="bbox 458 565 524 579; baseline 0 -4; x_size 18.782608; x_descenders 4; x_ascenders 4.782609">
|
||||
<span class='ocrx_word' id='word_1_61' title='bbox 458 565 524 579; x_wconf 93'>printed.</span>
|
||||
<span class='ocr_caption' id='line_1_10' title="bbox 459 565 525 579; baseline 0 -4; x_size 21.5; x_descenders 5.5; x_ascenders 5.5">
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 459 565 525 579; x_wconf 96'>printed.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_8' title="bbox 121 631 858 770">
|
||||
<p class='ocr_par' id='par_1_8' lang='eng' title="bbox 123 631 565 653">
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 123 631 565 653; baseline 0 -5; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_62' title='bbox 123 631 149 649; x_wconf 96'>To</span>
|
||||
<span class='ocrx_word' id='word_1_63' title='bbox 157 631 185 648; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_64' title='bbox 193 631 255 648; x_wconf 95'>Senate</span>
|
||||
<span class='ocrx_word' id='word_1_65' title='bbox 263 631 300 649; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_66' title='bbox 306 631 367 648; x_wconf 95'>House</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 375 631 397 653; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 404 631 554 652; x_wconf 74'>Representatives</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 559 638 565 648; x_wconf 86'>:</span>
|
||||
<div class='ocr_carea' id='block_1_8' title="bbox 122 629 858 769">
|
||||
<p class='ocr_par' id='par_1_8' lang='eng' title="bbox 124 629 566 652">
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 124 629 566 652; baseline 0.005 -6; x_size 22.268028; x_descenders 5.2680273; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 124 629 150 646; x_wconf 92'>To</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 158 629 186 646; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 194 629 256 646; x_wconf 96'>Senate</span>
|
||||
<span class='ocrx_word' id='word_1_61' title='bbox 264 630 301 647; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_62' title='bbox 307 630 368 647; x_wconf 96'>House</span>
|
||||
<span class='ocrx_word' id='word_1_63' title='bbox 376 630 398 652; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_64' title='bbox 405 630 555 652; x_wconf 93'>Representatives</span>
|
||||
<span class='ocrx_word' id='word_1_65' title='bbox 560 638 566 648; x_wconf 92'>:</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 121 658 858 724">
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 145 658 857 681; baseline 0.003 -7; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_70' title='bbox 145 658 155 674; x_wconf 92'>I</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 162 659 250 675; x_wconf 92'>transmit</span>
|
||||
<span class='ocrx_word' id='word_1_72' title='bbox 261 658 357 681; x_wconf 94'>herewith,</span>
|
||||
<span class='ocrx_word' id='word_1_73' title='bbox 365 658 394 675; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_74' title='bbox 401 659 434 675; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_75' title='bbox 441 658 577 675; x_wconf 96'>consideration</span>
|
||||
<span class='ocrx_word' id='word_1_76' title='bbox 586 658 607 675; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 616 658 714 680; x_wconf 95'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 723 663 734 675; x_wconf 94'>a</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 742 659 805 679; x_wconf 96'>report</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 810 658 857 676; x_wconf 96'>from</span>
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 122 656 858 726">
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 146 656 858 681; baseline 0.008 -9; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_66' title='bbox 146 656 156 672; x_wconf 80'>I</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 163 657 251 673; x_wconf 80'>transmit</span>
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 262 656 358 680; x_wconf 96'>herewith,</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 366 657 395 674; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_70' title='bbox 402 658 435 674; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 442 658 578 676; x_wconf 96'>consideration</span>
|
||||
<span class='ocrx_word' id='word_1_72' title='bbox 587 659 608 676; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_73' title='bbox 617 659 715 681; x_wconf 96'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_74' title='bbox 724 665 735 677; x_wconf 96'>a</span>
|
||||
<span class='ocrx_word' id='word_1_75' title='bbox 743 661 806 681; x_wconf 96'>report</span>
|
||||
<span class='ocrx_word' id='word_1_76' title='bbox 811 660 858 678; x_wconf 96'>from</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 121 680 858 703; baseline 0 -6; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 121 680 155 697; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 163 680 259 702; x_wconf 94'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 268 680 288 697; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 299 680 357 703; x_wconf 96'>State,</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 366 681 403 697; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 410 681 444 698; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 456 681 524 701; x_wconf 95'>papers</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 531 680 592 697; x_wconf 94'>which</span>
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 605 680 736 702; x_wconf 94'>accompanied</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 744 680 765 702; x_wconf 93'>it,</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 774 685 858 698; x_wconf 92'>concern-</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 122 678 858 704; baseline 0.008 -10; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 122 678 155 694; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 163 678 260 700; x_wconf 0'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 268 679 289 695; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 299 679 357 702; x_wconf 96'>State,</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 366 680 403 696; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 411 680 444 697; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 457 681 524 701; x_wconf 96'>papers</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 532 681 592 698; x_wconf 95'>which</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 605 682 736 703; x_wconf 84'>accompanied</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 744 682 765 704; x_wconf 93'>it,</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 774 687 858 700; x_wconf 92'>concern-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 122 702 835 724; baseline 0.001 -5; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 122 703 155 723; x_wconf 96'>ing</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 163 702 277 723; x_wconf 96'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 285 702 314 719; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 321 703 354 720; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_96' title='bbox 361 703 446 720; x_wconf 96'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_97' title='bbox 453 703 516 720; x_wconf 95'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 524 703 546 720; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 552 704 583 720; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_100' title='bbox 591 703 661 720; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 669 703 732 720; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 740 702 759 719; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 768 703 835 724; x_wconf 90'>Japan.</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 122 700 835 726; baseline 0.007 -9; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 122 700 155 721; x_wconf 96'>ing</span>
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 163 700 277 721; x_wconf 96'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 285 701 314 718; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 321 702 354 719; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 361 702 446 719; x_wconf 96'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 453 703 516 720; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 524 703 546 720; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 552 704 583 720; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_96' title='bbox 591 704 661 721; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_97' title='bbox 669 704 732 721; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 740 704 759 721; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 768 705 835 726; x_wconf 94'>Japan.</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_10' lang='eng' title="bbox 682 724 835 743">
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 682 724 835 743; baseline 0 -1; x_size 23.573172; x_descenders 5.5365853; x_ascenders 5.5">
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 682 725 705 743; x_wconf 85'>U.</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 715 724 734 743; x_wconf 89'>8.</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 743 725 835 743; x_wconf 83'>GRANT.</span>
|
||||
<p class='ocr_par' id='par_1_10' lang='eng' title="bbox 682 726 835 745">
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 682 726 835 745; baseline 0.007 -1; x_size 23.528408; x_descenders 5.5; x_ascenders 5.5">
|
||||
<span class='ocrx_word' id='word_1_100' title='bbox 682 726 705 744; x_wconf 85'>U.</span>
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 715 726 734 744; x_wconf 89'>8.</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 743 727 835 745; x_wconf 80'>GRANT.</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_11' lang='eng' title="bbox 144 746 482 770">
|
||||
<span class='ocr_line' id='line_1_16' title="bbox 144 746 482 770; baseline 0 -6; x_size 24; x_descenders 6; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 144 746 293 769; x_wconf 78'>‘WASHINGTON,</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 302 746 385 768; x_wconf 96'>January</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 393 748 422 770; x_wconf 92'>27,</span>
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 431 747 482 764; x_wconf 92'>1871.</span>
|
||||
<p class='ocr_par' id='par_1_11' lang='eng' title="bbox 144 744 482 769">
|
||||
<span class='ocr_line' id='line_1_16' title="bbox 144 744 482 769; baseline 0.006 -7; x_size 23; x_descenders 5; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 144 744 293 768; x_wconf 80'>‘WASHINGTON,</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 302 745 385 767; x_wconf 96'>January</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 393 747 422 769; x_wconf 93'>27,</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 431 747 482 764; x_wconf 93'>1871.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_9' title="bbox 120 846 865 1225">
|
||||
<p class='ocr_par' id='par_1_12' lang='eng' title="bbox 443 846 834 891">
|
||||
<span class='ocr_line' id='line_1_17' title="bbox 443 846 710 869; baseline 0.004 -7; x_size 23; x_descenders 6; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_111' title='bbox 443 846 586 863; x_wconf 95'>DEPARTMENT</span>
|
||||
<span class='ocrx_word' id='word_1_112' title='bbox 599 849 624 863; x_wconf 96'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_113' title='bbox 636 846 710 869; x_wconf 95'>STATE,</span>
|
||||
<div class='ocr_carea' id='block_1_9' title="bbox 118 846 863 1226">
|
||||
<p class='ocr_par' id='par_1_12' lang='eng' title="bbox 442 846 833 893">
|
||||
<span class='ocr_line' id='line_1_17' title="bbox 442 846 709 870; baseline 0.007 -8; x_size 23; x_descenders 6; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 442 846 585 863; x_wconf 96'>DEPARTMENT</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 598 850 623 864; x_wconf 96'>OF</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 635 847 709 870; x_wconf 95'>STATE,</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 529 868 834 891; baseline 0 -5; x_size 23.255997; x_descenders 5.2559972; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_114' title='bbox 529 868 649 891; x_wconf 95'>Washington,</span>
|
||||
<span class='ocrx_word' id='word_1_115' title='bbox 657 868 740 889; x_wconf 96'>January</span>
|
||||
<span class='ocrx_word' id='word_1_116' title='bbox 748 868 775 891; x_wconf 94'>26,</span>
|
||||
<span class='ocrx_word' id='word_1_117' title='bbox 784 868 834 886; x_wconf 85'>1870,</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 445 868 833 893; baseline 0.008 -8; x_size 24; x_descenders 6; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 445 890 447 892; x_wconf 1'>.</span>
|
||||
<span class='ocrx_word' id='word_1_111' title='bbox 528 868 648 892; x_wconf 96'>Washington,</span>
|
||||
<span class='ocrx_word' id='word_1_112' title='bbox 656 869 739 891; x_wconf 96'>January</span>
|
||||
<span class='ocrx_word' id='word_1_113' title='bbox 747 870 774 893; x_wconf 95'>26,</span>
|
||||
<span class='ocrx_word' id='word_1_114' title='bbox 783 870 833 888; x_wconf 85'>1870,</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_13' lang='eng' title="bbox 121 894 865 1051">
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 146 894 857 917; baseline 0 -5; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_118' title='bbox 146 895 184 912; x_wconf 96'>The</span>
|
||||
<span class='ocrx_word' id='word_1_119' title='bbox 193 895 290 917; x_wconf 96'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_120' title='bbox 297 895 319 912; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_121' title='bbox 328 895 381 913; x_wconf 96'>State</span>
|
||||
<span class='ocrx_word' id='word_1_122' title='bbox 389 896 422 913; x_wconf 96'>has</span>
|
||||
<span class='ocrx_word' id='word_1_123' title='bbox 430 894 462 912; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_124' title='bbox 469 895 528 912; x_wconf 96'>honor</span>
|
||||
<span class='ocrx_word' id='word_1_125' title='bbox 535 897 555 912; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_126' title='bbox 564 895 633 912; x_wconf 96'>submit</span>
|
||||
<span class='ocrx_word' id='word_1_127' title='bbox 640 895 730 913; x_wconf 90'>herewith,</span>
|
||||
<span class='ocrx_word' id='word_1_128' title='bbox 739 895 768 912; x_wconf 90'>for</span>
|
||||
<span class='ocrx_word' id='word_1_129' title='bbox 776 895 857 912; x_wconf 95'>revision</span>
|
||||
<p class='ocr_par' id='par_1_13' lang='eng' title="bbox 119 893 863 1050">
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 145 893 856 915; baseline 0.006 -5; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_115' title='bbox 145 893 183 910; x_wconf 96'>The</span>
|
||||
<span class='ocrx_word' id='word_1_116' title='bbox 192 893 289 915; x_wconf 96'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_117' title='bbox 296 894 318 911; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_118' title='bbox 327 894 380 912; x_wconf 96'>State</span>
|
||||
<span class='ocrx_word' id='word_1_119' title='bbox 388 895 421 912; x_wconf 96'>has</span>
|
||||
<span class='ocrx_word' id='word_1_120' title='bbox 429 894 461 912; x_wconf 97'>the</span>
|
||||
<span class='ocrx_word' id='word_1_121' title='bbox 468 895 527 912; x_wconf 96'>honor</span>
|
||||
<span class='ocrx_word' id='word_1_122' title='bbox 534 897 554 912; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_123' title='bbox 563 896 632 913; x_wconf 96'>submit</span>
|
||||
<span class='ocrx_word' id='word_1_124' title='bbox 639 896 729 914; x_wconf 91'>herewith,</span>
|
||||
<span class='ocrx_word' id='word_1_125' title='bbox 738 897 767 914; x_wconf 91'>for</span>
|
||||
<span class='ocrx_word' id='word_1_126' title='bbox 775 897 856 914; x_wconf 96'>revision</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 122 907 857 940; baseline 0 -5; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_130' title='bbox 122 918 148 939; x_wconf 95'>by</span>
|
||||
<span class='ocrx_word' id='word_1_131' title='bbox 160 917 258 940; x_wconf 96'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_132' title='bbox 266 918 285 935; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_133' title='bbox 294 918 403 939; x_wconf 96'>conformity</span>
|
||||
<span class='ocrx_word' id='word_1_134' title='bbox 412 917 456 935; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_135' title='bbox 464 917 496 934; x_wconf 97'>the</span>
|
||||
<span class='ocrx_word' id='word_1_136' title='bbox 505 918 607 939; x_wconf 96'>provisions</span>
|
||||
<span class='ocrx_word' id='word_1_137' title='bbox 615 917 636 934; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_138' title='bbox 646 918 715 935; x_wconf 97'>section</span>
|
||||
<span class='ocrx_word' id='word_1_139' title='bbox 724 907 736 934; x_wconf 92'>6</span>
|
||||
<span class='ocrx_word' id='word_1_140' title='bbox 749 917 770 934; x_wconf 94'>of</span>
|
||||
<span class='ocrx_word' id='word_1_141' title='bbox 779 918 812 935; x_wconf 94'>the</span>
|
||||
<span class='ocrx_word' id='word_1_142' title='bbox 826 919 857 935; x_wconf 96'>act</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 121 909 856 939; baseline 0.007 -7; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_127' title='bbox 121 915 147 937; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_128' title='bbox 159 915 257 938; x_wconf 96'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_129' title='bbox 265 916 284 933; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_130' title='bbox 293 917 402 938; x_wconf 96'>conformity</span>
|
||||
<span class='ocrx_word' id='word_1_131' title='bbox 411 917 455 934; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_132' title='bbox 463 917 495 934; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_133' title='bbox 504 918 606 939; x_wconf 96'>provisions</span>
|
||||
<span class='ocrx_word' id='word_1_134' title='bbox 614 918 635 935; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_135' title='bbox 645 919 714 936; x_wconf 96'>section</span>
|
||||
<span class='ocrx_word' id='word_1_136' title='bbox 723 909 735 936; x_wconf 91'>6</span>
|
||||
<span class='ocrx_word' id='word_1_137' title='bbox 748 919 769 936; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_138' title='bbox 778 920 811 937; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_139' title='bbox 825 921 856 937; x_wconf 96'>act</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_21' title="bbox 121 939 857 962; baseline -0.001 -5; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_143' title='bbox 121 940 217 961; x_wconf 96'>approved</span>
|
||||
<span class='ocrx_word' id='word_1_144' title='bbox 229 940 265 957; x_wconf 95'>22d</span>
|
||||
<span class='ocrx_word' id='word_1_145' title='bbox 278 939 299 957; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_146' title='bbox 313 940 368 962; x_wconf 96'>June,</span>
|
||||
<span class='ocrx_word' id='word_1_147' title='bbox 383 940 432 962; x_wconf 57'>1860,</span>
|
||||
<span class='ocrx_word' id='word_1_148' title='bbox 441 944 453 956; x_wconf 57'>a</span>
|
||||
<span class='ocrx_word' id='word_1_149' title='bbox 466 944 513 961; x_wconf 96'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_150' title='bbox 525 940 546 957; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_151' title='bbox 555 940 686 961; x_wconf 82'>“regulations</span>
|
||||
<span class='ocrx_word' id='word_1_152' title='bbox 693 940 722 957; x_wconf 95'>for</span>
|
||||
<span class='ocrx_word' id='word_1_153' title='bbox 730 940 762 956; x_wconf 97'>the</span>
|
||||
<span class='ocrx_word' id='word_1_154' title='bbox 770 940 857 957; x_wconf 95'>consular</span>
|
||||
<span class='ocr_line' id='line_1_21' title="bbox 120 938 856 962; baseline 0.007 -8; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_140' title='bbox 120 938 216 959; x_wconf 95'>approved</span>
|
||||
<span class='ocrx_word' id='word_1_141' title='bbox 228 938 264 955; x_wconf 95'>22d</span>
|
||||
<span class='ocrx_word' id='word_1_142' title='bbox 277 938 298 956; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_143' title='bbox 312 939 367 961; x_wconf 96'>June,</span>
|
||||
<span class='ocrx_word' id='word_1_144' title='bbox 382 939 431 962; x_wconf 72'>1860,</span>
|
||||
<span class='ocrx_word' id='word_1_145' title='bbox 440 944 452 956; x_wconf 72'>a</span>
|
||||
<span class='ocrx_word' id='word_1_146' title='bbox 465 944 512 961; x_wconf 96'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_147' title='bbox 524 940 545 957; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_148' title='bbox 554 940 685 962; x_wconf 80'>“regulations</span>
|
||||
<span class='ocrx_word' id='word_1_149' title='bbox 692 941 721 958; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_150' title='bbox 729 942 761 958; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_151' title='bbox 769 942 856 959; x_wconf 96'>consular</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 121 962 857 983; baseline -0.001 -3; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_155' title='bbox 121 963 184 980; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_156' title='bbox 198 962 219 979; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_157' title='bbox 228 963 261 979; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_158' title='bbox 272 962 342 980; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_159' title='bbox 356 962 419 980; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_160' title='bbox 430 962 450 979; x_wconf 95'>in</span>
|
||||
<span class='ocrx_word' id='word_1_161' title='bbox 465 962 544 983; x_wconf 95'>Japan,”</span>
|
||||
<span class='ocrx_word' id='word_1_162' title='bbox 556 962 633 979; x_wconf 96'>decreed</span>
|
||||
<span class='ocrx_word' id='word_1_163' title='bbox 645 963 683 979; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_164' title='bbox 695 962 759 980; x_wconf 93'>issued</span>
|
||||
<span class='ocrx_word' id='word_1_165' title='bbox 772 962 797 983; x_wconf 92'>by</span>
|
||||
<span class='ocrx_word' id='word_1_166' title='bbox 806 962 826 979; x_wconf 81'>C.</span>
|
||||
<span class='ocrx_word' id='word_1_167' title='bbox 835 962 857 979; x_wconf 47'>BE.</span>
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 120 960 856 985; baseline 0.005 -8; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_152' title='bbox 120 961 183 977; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_153' title='bbox 197 960 218 977; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_154' title='bbox 227 961 260 977; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_155' title='bbox 271 961 341 978; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_156' title='bbox 355 961 418 979; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_157' title='bbox 429 962 449 979; x_wconf 94'>in</span>
|
||||
<span class='ocrx_word' id='word_1_158' title='bbox 464 962 543 983; x_wconf 96'>Japan,”</span>
|
||||
<span class='ocrx_word' id='word_1_159' title='bbox 555 963 632 980; x_wconf 96'>decreed</span>
|
||||
<span class='ocrx_word' id='word_1_160' title='bbox 644 964 682 980; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_161' title='bbox 694 963 758 981; x_wconf 96'>issued</span>
|
||||
<span class='ocrx_word' id='word_1_162' title='bbox 771 964 796 985; x_wconf 93'>by</span>
|
||||
<span class='ocrx_word' id='word_1_163' title='bbox 805 964 825 981; x_wconf 88'>C.</span>
|
||||
<span class='ocrx_word' id='word_1_164' title='bbox 834 964 856 981; x_wconf 70'>E.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 122 984 858 1007; baseline 0 -6; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_168' title='bbox 122 985 152 1001; x_wconf 96'>De</span>
|
||||
<span class='ocrx_word' id='word_1_169' title='bbox 158 984 217 1007; x_wconf 96'>Long,</span>
|
||||
<span class='ocrx_word' id='word_1_170' title='bbox 226 985 258 1002; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_171' title='bbox 266 985 350 1002; x_wconf 96'>minister</span>
|
||||
<span class='ocrx_word' id='word_1_172' title='bbox 361 985 383 1002; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_173' title='bbox 391 985 423 1002; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_174' title='bbox 431 984 501 1001; x_wconf 97'>United</span>
|
||||
<span class='ocrx_word' id='word_1_175' title='bbox 509 985 572 1002; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_176' title='bbox 579 984 597 1001; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_177' title='bbox 606 984 648 1002; x_wconf 96'>that</span>
|
||||
<span class='ocrx_word' id='word_1_178' title='bbox 656 986 740 1006; x_wconf 96'>country,</span>
|
||||
<span class='ocrx_word' id='word_1_179' title='bbox 749 984 768 1001; x_wconf 92'>in</span>
|
||||
<span class='ocrx_word' id='word_1_180' title='bbox 777 984 858 1005; x_wconf 91'>Septem-</span>
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 120 982 856 1008; baseline 0.007 -9; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_165' title='bbox 120 982 150 999; x_wconf 96'>De</span>
|
||||
<span class='ocrx_word' id='word_1_166' title='bbox 156 982 215 1005; x_wconf 96'>Long,</span>
|
||||
<span class='ocrx_word' id='word_1_167' title='bbox 224 983 256 1000; x_wconf 93'>the</span>
|
||||
<span class='ocrx_word' id='word_1_168' title='bbox 264 984 348 1001; x_wconf 91'>miniater</span>
|
||||
<span class='ocrx_word' id='word_1_169' title='bbox 359 984 381 1001; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_170' title='bbox 389 984 421 1001; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_171' title='bbox 429 984 499 1001; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_172' title='bbox 507 985 570 1002; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_173' title='bbox 577 985 595 1002; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_174' title='bbox 604 985 646 1003; x_wconf 96'>that</span>
|
||||
<span class='ocrx_word' id='word_1_175' title='bbox 654 987 738 1008; x_wconf 96'>country,</span>
|
||||
<span class='ocrx_word' id='word_1_176' title='bbox 747 986 766 1003; x_wconf 93'>in</span>
|
||||
<span class='ocrx_word' id='word_1_177' title='bbox 775 986 856 1007; x_wconf 93'>Septem-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 121 1006 865 1034; baseline 0 -11; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_181' title='bbox 121 1007 160 1028; x_wconf 91'>ber,</span>
|
||||
<span class='ocrx_word' id='word_1_182' title='bbox 169 1007 223 1029; x_wconf 95'>1870;</span>
|
||||
<span class='ocrx_word' id='word_1_183' title='bbox 236 1008 273 1024; x_wconf 84'>and</span>
|
||||
<span class='ocrx_word' id='word_1_184' title='bbox 287 1007 326 1024; x_wconf 95'>also</span>
|
||||
<span class='ocrx_word' id='word_1_185' title='bbox 339 1007 371 1024; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_186' title='bbox 383 1011 450 1029; x_wconf 96'>papers</span>
|
||||
<span class='ocrx_word' id='word_1_187' title='bbox 461 1007 568 1024; x_wconf 96'>mentioned</span>
|
||||
<span class='ocrx_word' id='word_1_188' title='bbox 576 1006 595 1023; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_189' title='bbox 604 1007 635 1024; x_wconf 93'>the</span>
|
||||
<span class='ocrx_word' id='word_1_190' title='bbox 643 1007 741 1029; x_wconf 92'>subjoined</span>
|
||||
<span class='ocrx_word' id='word_1_191' title='bbox 748 1006 786 1028; x_wconf 96'>list,</span>
|
||||
<span class='ocrx_word' id='word_1_192' title='bbox 794 1007 865 1034; x_wconf 86'>which,</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 119 1004 863 1040; baseline 0.007 -19; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_178' title='bbox 119 1004 158 1026; x_wconf 93'>ber,</span>
|
||||
<span class='ocrx_word' id='word_1_179' title='bbox 167 1005 221 1027; x_wconf 88'>1870;</span>
|
||||
<span class='ocrx_word' id='word_1_180' title='bbox 234 1006 271 1022; x_wconf 87'>and</span>
|
||||
<span class='ocrx_word' id='word_1_181' title='bbox 285 1006 324 1023; x_wconf 87'>also</span>
|
||||
<span class='ocrx_word' id='word_1_182' title='bbox 337 1006 369 1023; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_183' title='bbox 381 1011 448 1028; x_wconf 96'>papers</span>
|
||||
<span class='ocrx_word' id='word_1_184' title='bbox 459 1007 566 1024; x_wconf 96'>mentioned</span>
|
||||
<span class='ocrx_word' id='word_1_185' title='bbox 574 1007 593 1024; x_wconf 94'>in</span>
|
||||
<span class='ocrx_word' id='word_1_186' title='bbox 602 1008 633 1025; x_wconf 93'>the</span>
|
||||
<span class='ocrx_word' id='word_1_187' title='bbox 641 1008 739 1030; x_wconf 92'>subjoined</span>
|
||||
<span class='ocrx_word' id='word_1_188' title='bbox 746 1008 784 1030; x_wconf 97'>list,</span>
|
||||
<span class='ocrx_word' id='word_1_189' title='bbox 782 1005 863 1040; x_wconf 86'>which,</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_25' title="bbox 122 1029 557 1051; baseline 0 -5; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_193' title='bbox 122 1029 197 1046; x_wconf 96'>contain</span>
|
||||
<span class='ocrx_word' id='word_1_194' title='bbox 205 1029 324 1051; x_wconf 96'>suggestions</span>
|
||||
<span class='ocrx_word' id='word_1_195' title='bbox 332 1034 355 1046; x_wconf 96'>on</span>
|
||||
<span class='ocrx_word' id='word_1_196' title='bbox 363 1029 394 1046; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_197' title='bbox 402 1029 473 1050; x_wconf 93'>subject</span>
|
||||
<span class='ocrx_word' id='word_1_198' title='bbox 480 1029 557 1046; x_wconf 85'>thereof.</span>
|
||||
<span class='ocr_line' id='line_1_25' title="bbox 120 1027 555 1050; baseline 0.007 -7; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_190' title='bbox 120 1027 195 1044; x_wconf 96'>contain</span>
|
||||
<span class='ocrx_word' id='word_1_191' title='bbox 203 1028 322 1049; x_wconf 96'>suggestions</span>
|
||||
<span class='ocrx_word' id='word_1_192' title='bbox 330 1033 353 1045; x_wconf 95'>on</span>
|
||||
<span class='ocrx_word' id='word_1_193' title='bbox 361 1028 392 1045; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_194' title='bbox 400 1029 471 1050; x_wconf 96'>subject</span>
|
||||
<span class='ocrx_word' id='word_1_195' title='bbox 478 1029 555 1046; x_wconf 86'>thereof.</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_14' lang='eng' title="bbox 120 1051 857 1185">
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 144 1051 855 1074; baseline -0.001 -6; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_199' title='bbox 144 1052 164 1067; x_wconf 95'>A</span>
|
||||
<span class='ocrx_word' id='word_1_200' title='bbox 171 1056 218 1073; x_wconf 95'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_201' title='bbox 226 1052 247 1068; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_202' title='bbox 253 1051 325 1068; x_wconf 93'>Article</span>
|
||||
<span class='ocrx_word' id='word_1_203' title='bbox 332 1051 399 1068; x_wconf 86'>XXVI</span>
|
||||
<span class='ocrx_word' id='word_1_204' title='bbox 407 1052 427 1069; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_205' title='bbox 433 1051 464 1068; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_206' title='bbox 472 1052 558 1068; x_wconf 95'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_207' title='bbox 562 1051 676 1072; x_wconf 95'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_208' title='bbox 682 1052 698 1068; x_wconf 96'>is</span>
|
||||
<span class='ocrx_word' id='word_1_209' title='bbox 703 1052 742 1068; x_wconf 94'>also</span>
|
||||
<span class='ocrx_word' id='word_1_210' title='bbox 749 1051 855 1074; x_wconf 95'>submitted,</span>
|
||||
<p class='ocr_par' id='par_1_14' lang='eng' title="bbox 118 1050 854 1185">
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 142 1050 853 1076; baseline 0.007 -11; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_196' title='bbox 142 1050 162 1065; x_wconf 96'>A</span>
|
||||
<span class='ocrx_word' id='word_1_197' title='bbox 169 1054 216 1071; x_wconf 96'>copy</span>
|
||||
<span class='ocrx_word' id='word_1_198' title='bbox 224 1050 245 1066; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_199' title='bbox 251 1050 323 1067; x_wconf 81'>Article</span>
|
||||
<span class='ocrx_word' id='word_1_200' title='bbox 330 1050 397 1067; x_wconf 77'>XXVI</span>
|
||||
<span class='ocrx_word' id='word_1_201' title='bbox 405 1051 425 1068; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_202' title='bbox 431 1051 462 1068; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_203' title='bbox 470 1052 556 1068; x_wconf 94'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_204' title='bbox 560 1052 674 1073; x_wconf 96'>regulations</span>
|
||||
<span class='ocrx_word' id='word_1_205' title='bbox 680 1053 696 1069; x_wconf 94'>is</span>
|
||||
<span class='ocrx_word' id='word_1_206' title='bbox 701 1053 740 1070; x_wconf 96'>also</span>
|
||||
<span class='ocrx_word' id='word_1_207' title='bbox 747 1053 853 1076; x_wconf 96'>submitted,</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 121 1072 856 1096; baseline 0 -5; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_211' title='bbox 121 1073 158 1091; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_212' title='bbox 171 1073 204 1090; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_213' title='bbox 218 1074 315 1095; x_wconf 96'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_214' title='bbox 321 1074 342 1090; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_215' title='bbox 351 1074 404 1091; x_wconf 96'>State</span>
|
||||
<span class='ocrx_word' id='word_1_216' title='bbox 415 1073 534 1095; x_wconf 96'>respectfully</span>
|
||||
<span class='ocrx_word' id='word_1_217' title='bbox 542 1074 634 1096; x_wconf 96'>suggests,</span>
|
||||
<span class='ocrx_word' id='word_1_218' title='bbox 643 1074 672 1090; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_219' title='bbox 679 1074 712 1091; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_220' title='bbox 720 1072 856 1091; x_wconf 96'>consideration</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 119 1071 854 1097; baseline 0.007 -9; x_size 21; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_208' title='bbox 119 1071 156 1088; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_209' title='bbox 169 1071 202 1088; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_210' title='bbox 216 1072 313 1094; x_wconf 96'>Secretary</span>
|
||||
<span class='ocrx_word' id='word_1_211' title='bbox 319 1073 340 1089; x_wconf 90'>of</span>
|
||||
<span class='ocrx_word' id='word_1_212' title='bbox 349 1073 402 1090; x_wconf 96'>State</span>
|
||||
<span class='ocrx_word' id='word_1_213' title='bbox 413 1073 532 1095; x_wconf 96'>respectfully</span>
|
||||
<span class='ocrx_word' id='word_1_214' title='bbox 540 1075 632 1097; x_wconf 96'>suggests,</span>
|
||||
<span class='ocrx_word' id='word_1_215' title='bbox 641 1075 670 1091; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_216' title='bbox 677 1075 710 1092; x_wconf 97'>the</span>
|
||||
<span class='ocrx_word' id='word_1_217' title='bbox 718 1074 854 1093; x_wconf 96'>consideration</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_28' title="bbox 120 1095 854 1118; baseline -0.001 -5; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_221' title='bbox 120 1095 142 1113; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_222' title='bbox 151 1095 248 1118; x_wconf 96'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_223' title='bbox 257 1097 289 1113; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_224' title='bbox 302 1096 397 1118; x_wconf 96'>propriety</span>
|
||||
<span class='ocrx_word' id='word_1_225' title='bbox 408 1096 429 1113; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_226' title='bbox 437 1096 518 1117; x_wconf 96'>limiting</span>
|
||||
<span class='ocrx_word' id='word_1_227' title='bbox 530 1095 562 1113; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_228' title='bbox 573 1100 635 1117; x_wconf 96'>power</span>
|
||||
<span class='ocrx_word' id='word_1_229' title='bbox 643 1096 664 1113; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_230' title='bbox 673 1096 766 1113; x_wconf 96'>ministers</span>
|
||||
<span class='ocrx_word' id='word_1_231' title='bbox 774 1091 801 1122; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_232' title='bbox 800 1095 854 1113; x_wconf 96'>make</span>
|
||||
<span class='ocr_line' id='line_1_28' title="bbox 118 1093 852 1118; baseline 0.005 -8; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_218' title='bbox 118 1093 140 1110; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_219' title='bbox 149 1093 246 1116; x_wconf 94'>Congress,</span>
|
||||
<span class='ocrx_word' id='word_1_220' title='bbox 255 1095 287 1111; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_221' title='bbox 300 1095 395 1117; x_wconf 96'>propriety</span>
|
||||
<span class='ocrx_word' id='word_1_222' title='bbox 406 1096 427 1112; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_223' title='bbox 435 1096 516 1117; x_wconf 96'>limiting</span>
|
||||
<span class='ocrx_word' id='word_1_224' title='bbox 528 1095 560 1113; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_225' title='bbox 571 1101 633 1118; x_wconf 96'>power</span>
|
||||
<span class='ocrx_word' id='word_1_226' title='bbox 641 1097 662 1114; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_227' title='bbox 671 1097 764 1114; x_wconf 96'>ministers</span>
|
||||
<span class='ocrx_word' id='word_1_228' title='bbox 772 1089 799 1122; x_wconf 95'>to</span>
|
||||
<span class='ocrx_word' id='word_1_229' title='bbox 798 1097 851 1115; x_wconf 95'>make</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_29' title="bbox 121 1117 856 1140; baseline 0 -6; x_size 22; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_233' title='bbox 121 1118 197 1135; x_wconf 95'>decrees</span>
|
||||
<span class='ocrx_word' id='word_1_234' title='bbox 208 1118 246 1135; x_wconf 94'>and</span>
|
||||
<span class='ocrx_word' id='word_1_235' title='bbox 250 1117 361 1140; x_wconf 94'>regulation,</span>
|
||||
<span class='ocrx_word' id='word_1_236' title='bbox 369 1118 388 1135; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_237' title='bbox 395 1119 428 1136; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_238' title='bbox 435 1122 489 1135; x_wconf 96'>sense</span>
|
||||
<span class='ocrx_word' id='word_1_239' title='bbox 495 1118 516 1135; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_240' title='bbox 523 1118 584 1136; x_wconf 96'>which</span>
|
||||
<span class='ocrx_word' id='word_1_241' title='bbox 591 1118 608 1135; x_wconf 96'>it</span>
|
||||
<span class='ocrx_word' id='word_1_242' title='bbox 614 1118 632 1135; x_wconf 96'>is</span>
|
||||
<span class='ocrx_word' id='word_1_243' title='bbox 638 1117 711 1135; x_wconf 95'>limited</span>
|
||||
<span class='ocrx_word' id='word_1_244' title='bbox 718 1118 743 1139; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_245' title='bbox 750 1118 856 1139; x_wconf 96'>paragraph</span>
|
||||
<span class='ocr_line' id='line_1_29' title="bbox 119 1115 853 1141; baseline 0.007 -9; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_230' title='bbox 119 1115 194 1133; x_wconf 88'>decrees</span>
|
||||
<span class='ocrx_word' id='word_1_231' title='bbox 206 1116 243 1133; x_wconf 88'>and</span>
|
||||
<span class='ocrx_word' id='word_1_232' title='bbox 248 1116 358 1139; x_wconf 96'>regulation,</span>
|
||||
<span class='ocrx_word' id='word_1_233' title='bbox 367 1117 385 1134; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_234' title='bbox 393 1118 425 1135; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_235' title='bbox 433 1122 486 1135; x_wconf 96'>sense</span>
|
||||
<span class='ocrx_word' id='word_1_236' title='bbox 493 1118 513 1135; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_237' title='bbox 521 1118 581 1136; x_wconf 96'>which</span>
|
||||
<span class='ocrx_word' id='word_1_238' title='bbox 589 1119 605 1136; x_wconf 96'>it</span>
|
||||
<span class='ocrx_word' id='word_1_239' title='bbox 612 1119 629 1136; x_wconf 96'>is</span>
|
||||
<span class='ocrx_word' id='word_1_240' title='bbox 636 1118 708 1136; x_wconf 95'>limited</span>
|
||||
<span class='ocrx_word' id='word_1_241' title='bbox 716 1120 741 1141; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_242' title='bbox 747 1120 853 1141; x_wconf 96'>paragraph</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_30' title="bbox 122 1140 857 1162; baseline 0 -5; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_246' title='bbox 122 1140 156 1157; x_wconf 96'>431</span>
|
||||
<span class='ocrx_word' id='word_1_247' title='bbox 164 1140 186 1157; x_wconf 97'>of</span>
|
||||
<span class='ocrx_word' id='word_1_248' title='bbox 195 1141 227 1157; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_249' title='bbox 235 1140 300 1158; x_wconf 95'>article</span>
|
||||
<span class='ocrx_word' id='word_1_250' title='bbox 307 1140 369 1158; x_wconf 93'>before</span>
|
||||
<span class='ocrx_word' id='word_1_251' title='bbox 377 1140 508 1158; x_wconf 92'>named—that</span>
|
||||
<span class='ocrx_word' id='word_1_252' title='bbox 516 1141 537 1161; x_wconf 96'>is,</span>
|
||||
<span class='ocrx_word' id='word_1_253' title='bbox 547 1141 582 1158; x_wconf 85'>“to</span>
|
||||
<span class='ocrx_word' id='word_1_254' title='bbox 591 1141 631 1157; x_wconf 96'>acts</span>
|
||||
<span class='ocrx_word' id='word_1_255' title='bbox 638 1141 760 1162; x_wconf 95'>necessary</span>
|
||||
<span class='ocrx_word' id='word_1_256' title='bbox 738 1136 762 1167; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_257' title='bbox 770 1140 857 1162; x_wconf 96'>organize</span>
|
||||
<span class='ocr_line' id='line_1_30' title="bbox 119 1138 854 1164; baseline 0.007 -10; x_size 22; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_243' title='bbox 119 1138 153 1154; x_wconf 94'>431</span>
|
||||
<span class='ocrx_word' id='word_1_244' title='bbox 161 1138 183 1155; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_245' title='bbox 192 1139 224 1155; x_wconf 95'>the</span>
|
||||
<span class='ocrx_word' id='word_1_246' title='bbox 232 1139 297 1156; x_wconf 96'>article</span>
|
||||
<span class='ocrx_word' id='word_1_247' title='bbox 304 1139 366 1157; x_wconf 93'>before</span>
|
||||
<span class='ocrx_word' id='word_1_248' title='bbox 374 1140 505 1157; x_wconf 91'>named—that</span>
|
||||
<span class='ocrx_word' id='word_1_249' title='bbox 513 1141 534 1161; x_wconf 96'>is,</span>
|
||||
<span class='ocrx_word' id='word_1_250' title='bbox 544 1141 579 1158; x_wconf 87'>“to</span>
|
||||
<span class='ocrx_word' id='word_1_251' title='bbox 588 1142 628 1158; x_wconf 96'>acts</span>
|
||||
<span class='ocrx_word' id='word_1_252' title='bbox 635 1143 757 1164; x_wconf 95'>necessary</span>
|
||||
<span class='ocrx_word' id='word_1_253' title='bbox 732 1134 761 1168; x_wconf 95'>to</span>
|
||||
<span class='ocrx_word' id='word_1_254' title='bbox 767 1142 854 1164; x_wconf 96'>organize</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_31' title="bbox 121 1162 662 1185; baseline 0.002 -6; x_size 22; x_descenders 4; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_258' title='bbox 121 1162 159 1180; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_259' title='bbox 168 1162 210 1184; x_wconf 97'>give</span>
|
||||
<span class='ocrx_word' id='word_1_260' title='bbox 218 1163 312 1184; x_wconf 96'>efficiency</span>
|
||||
<span class='ocrx_word' id='word_1_261' title='bbox 320 1164 340 1180; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_262' title='bbox 348 1163 380 1180; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_263' title='bbox 388 1164 449 1181; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_264' title='bbox 458 1163 533 1180; x_wconf 96'>created</span>
|
||||
<span class='ocrx_word' id='word_1_265' title='bbox 539 1163 564 1185; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_266' title='bbox 574 1162 607 1180; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_267' title='bbox 615 1163 662 1180; x_wconf 96'>act.”</span>
|
||||
<span class='ocr_line' id='line_1_31' title="bbox 118 1160 659 1185; baseline 0.007 -8; x_size 23; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_255' title='bbox 118 1160 156 1177; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_256' title='bbox 165 1160 207 1182; x_wconf 96'>give</span>
|
||||
<span class='ocrx_word' id='word_1_257' title='bbox 215 1161 309 1183; x_wconf 95'>efficiency</span>
|
||||
<span class='ocrx_word' id='word_1_258' title='bbox 317 1163 337 1179; x_wconf 95'>to</span>
|
||||
<span class='ocrx_word' id='word_1_259' title='bbox 345 1162 377 1179; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_260' title='bbox 385 1164 446 1180; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_261' title='bbox 455 1163 530 1180; x_wconf 96'>created</span>
|
||||
<span class='ocrx_word' id='word_1_262' title='bbox 536 1163 561 1185; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_263' title='bbox 571 1163 604 1181; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_264' title='bbox 612 1164 659 1181; x_wconf 94'>act.”</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_15' lang='eng' title="bbox 144 1184 386 1207">
|
||||
<span class='ocr_line' id='line_1_32' title="bbox 144 1184 386 1207; baseline 0 -5; x_size 23; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_268' title='bbox 144 1185 271 1207; x_wconf 86'>Respectfully</span>
|
||||
<span class='ocrx_word' id='word_1_269' title='bbox 279 1184 386 1202; x_wconf 93'>submitted.</span>
|
||||
<p class='ocr_par' id='par_1_15' lang='eng' title="bbox 141 1183 555 1205">
|
||||
<span class='ocr_line' id='line_1_32' title="bbox 141 1183 555 1205; baseline 0.007 -6; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_265' title='bbox 141 1183 268 1205; x_wconf 34'>Respectfully</span>
|
||||
<span class='ocrx_word' id='word_1_266' title='bbox 276 1183 383 1201; x_wconf 93'>submitted.</span>
|
||||
<span class='ocrx_word' id='word_1_267' title='bbox 553 1194 555 1196; x_wconf 0'>:</span>
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_16' lang='eng' title="bbox 625 1206 834 1225">
|
||||
<span class='ocr_line' id='line_1_33' title="bbox 625 1206 834 1225; baseline -0.005 0; x_size 23.69949; x_descenders 5.5158105; x_ascenders 5.590498">
|
||||
<span class='ocrx_word' id='word_1_270' title='bbox 625 1206 760 1225; x_wconf 96'>HAMILTON</span>
|
||||
<span class='ocrx_word' id='word_1_271' title='bbox 768 1207 834 1224; x_wconf 95'>FISH.</span>
|
||||
<p class='ocr_par' id='par_1_16' lang='eng' title="bbox 622 1208 831 1226">
|
||||
<span class='ocr_line' id='line_1_33' title="bbox 622 1208 831 1226; baseline 0.005 -1; x_size 23.623137; x_descenders 5.52807; x_ascenders 5.5594797">
|
||||
<span class='ocrx_word' id='word_1_268' title='bbox 622 1208 757 1226; x_wconf 96'>HAMILTON</span>
|
||||
<span class='ocrx_word' id='word_1_269' title='bbox 765 1209 831 1226; x_wconf 96'>FISH.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_10' title="bbox 143 1229 317 1247">
|
||||
<p class='ocr_par' id='par_1_17' lang='eng' title="bbox 143 1229 317 1247">
|
||||
<span class='ocr_line' id='line_1_34' title="bbox 143 1229 317 1247; baseline 0.006 -1; x_size 22.296295; x_descenders 5.2962961; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_272' title='bbox 143 1229 183 1246; x_wconf 96'>The</span>
|
||||
<span class='ocrx_word' id='word_1_273' title='bbox 191 1230 317 1247; x_wconf 74'>PRESIDENT,</span>
|
||||
<div class='ocr_carea' id='block_1_10' title="bbox 140 1227 314 1246">
|
||||
<p class='ocr_par' id='par_1_17' lang='eng' title="bbox 140 1227 314 1246">
|
||||
<span class='ocr_line' id='line_1_34' title="bbox 140 1227 314 1246; baseline 0.011 -2; x_size 22.296295; x_descenders 5.2962961; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_270' title='bbox 140 1227 180 1244; x_wconf 96'>The</span>
|
||||
<span class='ocrx_word' id='word_1_271' title='bbox 188 1228 314 1246; x_wconf 81'>PRESIDENT,</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_11' title="bbox 345 1308 632 1331">
|
||||
<p class='ocr_par' id='par_1_18' lang='eng' title="bbox 345 1308 632 1331">
|
||||
<span class='ocr_line' id='line_1_35' title="bbox 345 1308 632 1331; baseline 0 -6; x_size 22; x_descenders 5; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_274' title='bbox 345 1308 387 1325; x_wconf 91'>List</span>
|
||||
<span class='ocrx_word' id='word_1_275' title='bbox 393 1308 415 1331; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_276' title='bbox 423 1308 557 1330; x_wconf 96'>accompanying</span>
|
||||
<span class='ocrx_word' id='word_1_277' title='bbox 561 1312 632 1331; x_wconf 87'>papers.</span>
|
||||
<div class='ocr_carea' id='block_1_11' title="bbox 341 1307 628 1331">
|
||||
<p class='ocr_par' id='par_1_18' lang='eng' title="bbox 341 1307 628 1331">
|
||||
<span class='ocr_line' id='line_1_35' title="bbox 341 1307 628 1331; baseline 0.007 -7; x_size 23; x_descenders 5; x_ascenders 5">
|
||||
<span class='ocrx_word' id='word_1_272' title='bbox 341 1307 383 1324; x_wconf 95'>List</span>
|
||||
<span class='ocrx_word' id='word_1_273' title='bbox 389 1307 411 1330; x_wconf 92'>of</span>
|
||||
<span class='ocrx_word' id='word_1_274' title='bbox 419 1308 553 1330; x_wconf 90'>accompanying</span>
|
||||
<span class='ocrx_word' id='word_1_275' title='bbox 557 1313 628 1331; x_wconf 89'>papers.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_12' title="bbox 142 1340 857 1393">
|
||||
<p class='ocr_par' id='par_1_19' lang='eng' title="bbox 142 1340 857 1393">
|
||||
<span class='ocr_line' id='line_1_36' title="bbox 142 1340 857 1370; baseline 0 -5; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_278' title='bbox 142 1348 159 1365; x_wconf 96'>1,</span>
|
||||
<span class='ocrx_word' id='word_1_279' title='bbox 170 1348 293 1370; x_wconf 96'>Regulations</span>
|
||||
<span class='ocrx_word' id='word_1_280' title='bbox 300 1348 329 1365; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_281' title='bbox 338 1340 370 1366; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_282' title='bbox 378 1348 463 1366; x_wconf 96'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_283' title='bbox 470 1350 533 1366; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_284' title='bbox 541 1349 562 1366; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_285' title='bbox 570 1348 603 1365; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_286' title='bbox 611 1348 682 1366; x_wconf 95'>United</span>
|
||||
<span class='ocrx_word' id='word_1_287' title='bbox 690 1348 753 1366; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_288' title='bbox 761 1347 781 1365; x_wconf 95'>in</span>
|
||||
<span class='ocrx_word' id='word_1_289' title='bbox 788 1348 857 1370; x_wconf 93'>Japan.</span>
|
||||
<div class='ocr_carea' id='block_1_12' title="bbox 138 1337 853 1395">
|
||||
<p class='ocr_par' id='par_1_19' lang='eng' title="bbox 138 1337 853 1395">
|
||||
<span class='ocr_line' id='line_1_36' title="bbox 138 1337 853 1372; baseline 0.007 -10; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_276' title='bbox 138 1346 155 1363; x_wconf 96'>1,</span>
|
||||
<span class='ocrx_word' id='word_1_277' title='bbox 166 1346 289 1368; x_wconf 96'>Regulations</span>
|
||||
<span class='ocrx_word' id='word_1_278' title='bbox 296 1337 325 1364; x_wconf 96'>for</span>
|
||||
<span class='ocrx_word' id='word_1_279' title='bbox 334 1339 366 1365; x_wconf 97'>the</span>
|
||||
<span class='ocrx_word' id='word_1_280' title='bbox 374 1348 459 1366; x_wconf 96'>consular</span>
|
||||
<span class='ocrx_word' id='word_1_281' title='bbox 466 1350 529 1366; x_wconf 96'>courts</span>
|
||||
<span class='ocrx_word' id='word_1_282' title='bbox 537 1349 558 1366; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_283' title='bbox 566 1349 599 1366; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_284' title='bbox 607 1349 678 1367; x_wconf 96'>United</span>
|
||||
<span class='ocrx_word' id='word_1_285' title='bbox 686 1349 749 1367; x_wconf 96'>States</span>
|
||||
<span class='ocrx_word' id='word_1_286' title='bbox 757 1349 777 1367; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_287' title='bbox 784 1350 853 1372; x_wconf 96'>Japan.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_37' title="bbox 142 1371 644 1393; baseline 0.004 -7; x_size 30.84; x_descenders 5; x_ascenders 8.8400002">
|
||||
<span class='ocrx_word' id='word_1_290' title='bbox 142 1371 159 1387; x_wconf 90'>2,</span>
|
||||
<span class='ocrx_word' id='word_1_291' title='bbox 170 1371 205 1387; x_wconf 96'>Mr.</span>
|
||||
<span class='ocrx_word' id='word_1_292' title='bbox 214 1371 260 1388; x_wconf 95'>Fish</span>
|
||||
<span class='ocrx_word' id='word_1_293' title='bbox 268 1372 288 1389; x_wconf 95'>to</span>
|
||||
<span class='ocrx_word' id='word_1_294' title='bbox 295 1371 330 1388; x_wconf 95'>Mr.</span>
|
||||
<span class='ocrx_word' id='word_1_295' title='bbox 338 1371 368 1388; x_wconf 96'>De</span>
|
||||
<span class='ocrx_word' id='word_1_296' title='bbox 375 1371 433 1393; x_wconf 96'>Long,</span>
|
||||
<span class='ocrx_word' id='word_1_297' title='bbox 442 1371 550 1392; x_wconf 95'>September</span>
|
||||
<span class='ocrx_word' id='word_1_298' title='bbox 557 1371 585 1393; x_wconf 95'>10,</span>
|
||||
<span class='ocrx_word' id='word_1_299' title='bbox 594 1371 644 1388; x_wconf 79'>1870,</span>
|
||||
<span class='ocr_line' id='line_1_37' title="bbox 138 1369 812 1395; baseline 0.007 -10; x_size 23; x_descenders 5; x_ascenders 6">
|
||||
<span class='ocrx_word' id='word_1_288' title='bbox 138 1369 155 1385; x_wconf 90'>2.</span>
|
||||
<span class='ocrx_word' id='word_1_289' title='bbox 166 1369 201 1385; x_wconf 95'>Mr.</span>
|
||||
<span class='ocrx_word' id='word_1_290' title='bbox 210 1369 256 1386; x_wconf 96'>Fish</span>
|
||||
<span class='ocrx_word' id='word_1_291' title='bbox 264 1370 284 1387; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_292' title='bbox 291 1370 326 1387; x_wconf 86'>Mr.</span>
|
||||
<span class='ocrx_word' id='word_1_293' title='bbox 334 1370 364 1387; x_wconf 96'>De</span>
|
||||
<span class='ocrx_word' id='word_1_294' title='bbox 371 1370 429 1393; x_wconf 96'>Long,</span>
|
||||
<span class='ocrx_word' id='word_1_295' title='bbox 438 1371 546 1392; x_wconf 96'>September</span>
|
||||
<span class='ocrx_word' id='word_1_296' title='bbox 553 1372 581 1394; x_wconf 96'>10,</span>
|
||||
<span class='ocrx_word' id='word_1_297' title='bbox 590 1372 640 1389; x_wconf 96'>1870.</span>
|
||||
<span class='ocrx_word' id='word_1_298' title='bbox 810 1393 812 1395; x_wconf 0'>.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_13' title="bbox 0 0 1000 1520">
|
||||
<p class='ocr_par' id='par_1_20' lang='eng' title="bbox 0 0 1000 1520">
|
||||
<span class='ocr_line' id='line_1_38' title="bbox 0 0 1000 1520; baseline 0 2; x_size 763; x_descenders -381.5; x_ascenders 381.5">
|
||||
<span class='ocrx_word' id='word_1_300' title='bbox 0 0 1000 1520; x_wconf 95'> </span>
|
||||
<span class='ocr_line' id='line_1_38' title="bbox 0 0 1000 1520; baseline 0 9; x_size 770; x_descenders -385; x_ascenders 385">
|
||||
<span class='ocrx_word' id='word_1_299' title='bbox 0 0 1000 1520; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_14' title="bbox 24 1504 845 1520">
|
||||
<p class='ocr_par' id='par_1_21' lang='eng' title="bbox 24 1504 845 1520">
|
||||
<span class='ocr_line' id='line_1_39' title="bbox 24 1504 845 1520; baseline 0 0; x_size 8; x_descenders -4; x_ascenders 4">
|
||||
<span class='ocrx_word' id='word_1_301' title='bbox 24 1504 845 1520; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_15' title="bbox 982 987 1000 1500">
|
||||
<p class='ocr_par' id='par_1_22' lang='eng' title="bbox 982 987 1000 1500">
|
||||
<span class='ocr_line' id='line_1_40' title="bbox 982 987 1000 1500; baseline 0 0; x_size 256.5; x_descenders -128.25; x_ascenders 128.25">
|
||||
<span class='ocrx_word' id='word_1_302' title='bbox 982 987 1000 1500; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_14' title="bbox 19 1496 978 1520">
|
||||
<p class='ocr_par' id='par_1_21' lang='eng' title="bbox 19 1496 978 1520">
|
||||
<span class='ocr_line' id='line_1_39' title="bbox 19 1496 978 1520; baseline 0 7; x_size 16; x_descenders -8; x_ascenders 8">
|
||||
<span class='ocrx_word' id='word_1_300' title='bbox 19 1496 978 1520; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+8
-10
@@ -1,5 +1,5 @@
|
||||
4ist ConGREss, } SENATE. { Ex. Doc,
|
||||
3d Session. No. 25.
|
||||
41st CONGRESS; | SENATE.
|
||||
3d Session. }
|
||||
|
||||
MESSAGE
|
||||
|
||||
@@ -12,7 +12,7 @@ COMMUNICATING
|
||||
A copy of regulations for the consular courts of the United States in Japan,
|
||||
decreed and issued by the minister of the United States in that country.
|
||||
|
||||
JANUARY 27, 1871,—Read, referred to the Committee on Commerce, and ordered to be
|
||||
January 27, 1871,—Read, referred to the Committee on Commerce, and ordered to be
|
||||
printed.
|
||||
|
||||
To the Senate and House of Representatives :
|
||||
@@ -26,13 +26,13 @@ U. 8. GRANT.
|
||||
‘WASHINGTON, January 27, 1871.
|
||||
|
||||
DEPARTMENT OF STATE,
|
||||
Washington, January 26, 1870,
|
||||
. Washington, January 26, 1870,
|
||||
|
||||
The Secretary of State has the honor to submit herewith, for revision
|
||||
by Congress, in conformity with the provisions of section 6 of the act
|
||||
approved 22d of June, 1860, a copy of “regulations for the consular
|
||||
courts of the United States in Japan,” decreed and issued by C. BE.
|
||||
De Long, the minister of the United States in that country, in Septem-
|
||||
courts of the United States in Japan,” decreed and issued by C. E.
|
||||
De Long, the miniater of the United States in that country, in Septem-
|
||||
ber, 1870; and also the papers mentioned in the subjoined list, which,
|
||||
contain suggestions on the subject thereof.
|
||||
|
||||
@@ -43,7 +43,7 @@ decrees and regulation, in the sense in which it is limited by paragraph
|
||||
431 of the article before named—that is, “to acts necessary to organize
|
||||
and give efficiency to the courts created by the act.”
|
||||
|
||||
Respectfully submitted.
|
||||
Respectfully submitted. :
|
||||
|
||||
HAMILTON FISH.
|
||||
|
||||
@@ -52,9 +52,7 @@ The PRESIDENT,
|
||||
List of accompanying papers.
|
||||
|
||||
1, Regulations for the consular courts of the United States in Japan.
|
||||
2, Mr. Fish to Mr. De Long, September 10, 1870,
|
||||
|
||||
|
||||
2. Mr. Fish to Mr. De Long, September 10, 1870. .
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.tyuf6jbx/000001_ocr.png"; bbox 0 0 512 512; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.w4nb7zqc/000001_ocr.png"; bbox 0 0 512 512; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 0 0 477 512">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 0 0 477 512">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 0 0 477 512; baseline 0 0; x_size 684; x_descenders 171; x_ascenders 171">
|
||||
|
||||
BIN
Binary file not shown.
Vendored
+43
-44
@@ -1,44 +1,43 @@
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/francais.pdf", "args": ["-l", "deu", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/2400dpi.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/graph_ocred.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/poster.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/poster.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000002_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000002_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000003_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000003_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000004_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000004_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/graph_ocred.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/2400dpi.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__osd__--psm__0__000004_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000004_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__osd__--psm__0__000002_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000002_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__osd__--psm__0__000003_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000003_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/poster.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/poster.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]}
|
||||
{"tesseract_version": "4.1.1", "platform": "Linux-5.11.0-25-generic-x86_64-with-glibc2.33", "python": "3.9.5", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]}
|
||||
|
||||
+80
-80
@@ -9,7 +9,7 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.sh2wg519/000001_ocr.png"; bbox 0 0 1600 1962; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.ym6m0ql4/000001_ocr.png"; bbox 0 0 1600 1962; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 84 216 786 1605">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 84 216 786 1605">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 84 216 786 1605; baseline 0 0; x_size 694.5; x_descenders -347.25; x_ascenders 347.25">
|
||||
@@ -19,22 +19,22 @@
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_2' title="bbox 286 1631 578 1647">
|
||||
<p class='ocr_par' id='par_1_2' lang='eng' title="bbox 286 1631 578 1647">
|
||||
<span class='ocr_caption' id='line_1_2' title="bbox 286 1631 578 1647; baseline 0 -1; x_size 20.444445; x_descenders 5.1111112; x_ascenders 5.1111112">
|
||||
<span class='ocr_caption' id='line_1_2' title="bbox 286 1631 578 1647; baseline 0 -1; x_size 20.512821; x_descenders 5.1282053; x_ascenders 5.1282053">
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 286 1631 352 1646; x_wconf 93'>THEY</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 366 1631 480 1646; x_wconf 88'>TIP-TOED</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 494 1631 578 1647; x_wconf 92'>ALONG.</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 366 1631 480 1646; x_wconf 87'>TIP-TOED</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 494 1631 578 1647; x_wconf 93'>ALONG.</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 472 369 1541 442">
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 467 369 1541 442">
|
||||
<p class='ocr_par' id='par_1_3' lang='eng' title="bbox 443 369 1541 442">
|
||||
<span class='ocr_textfloat' id='line_1_3' title="bbox 578 369 956 407; baseline 0.012 -7.522; x_size 13.387096; x_descenders 3.3870966; x_ascenders 3.3870969">
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 578 369 617 407; x_wconf 1'>ee</span>
|
||||
<span class='ocr_textfloat' id='line_1_3' title="bbox 562 369 956 407; baseline 0.012 -7.713; x_size 13.387096; x_descenders 3.3870966; x_ascenders 3.3870969">
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 562 369 620 407; x_wconf 39'>al</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 951 398 956 404; x_wconf 64'>.</span>
|
||||
</span>
|
||||
<span class='ocr_textfloat' id='line_1_4' title="bbox 472 372 1541 442; baseline 0.006 -16.815; x_size 40; x_descenders 10; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 472 373 573 440; x_wconf 23'>Se</span>
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 696 372 796 431; x_wconf 64'>We</span>
|
||||
<span class='ocr_textfloat' id='line_1_4' title="bbox 467 372 1541 442; baseline 0.005 -15.869; x_size 40; x_descenders 10; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 467 373 575 441; x_wconf 63'>SE</span>
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 696 372 796 431; x_wconf 70'>We</span>
|
||||
<span class='ocrx_word' id='word_1_9' title='bbox 829 400 911 428; x_wconf 93'>went</span>
|
||||
<span class='ocrx_word' id='word_1_10' title='bbox 932 399 1106 439; x_wconf 92'>tip-toeing</span>
|
||||
<span class='ocrx_word' id='word_1_11' title='bbox 1127 400 1222 441; x_wconf 96'>along</span>
|
||||
@@ -46,23 +46,23 @@
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_4' title="bbox 826 453 1541 1692">
|
||||
<p class='ocr_par' id='par_1_4' lang='eng' title="bbox 827 453 1541 1177">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 827 453 1540 489; baseline 0.008 -6; x_size 39.983448; x_descenders 9.983448; x_ascenders 10">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 827 453 1540 489; baseline 0.008 -6; x_size 40.095535; x_descenders 10.095533; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 827 453 881 484; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 903 456 984 485; x_wconf 96'>trees</span>
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 1007 456 1087 486; x_wconf 96'>back</span>
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 1110 457 1244 488; x_wconf 96'>towards</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 1268 457 1321 488; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 1344 458 1405 488; x_wconf 95'>end</span>
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 1344 458 1405 488; x_wconf 96'>end</span>
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 1428 458 1461 488; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_22' title='bbox 1486 459 1540 489; x_wconf 96'>the</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 828 511 1540 554; baseline 0.008 -14; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 828 511 1541 554; baseline 0.008 -14; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_23' title='bbox 828 511 964 542; x_wconf 91'>widow’s</span>
|
||||
<span class='ocrx_word' id='word_1_24' title='bbox 991 513 1121 553; x_wconf 96'>garden,</span>
|
||||
<span class='ocrx_word' id='word_1_25' title='bbox 1147 514 1296 554; x_wconf 96'>stooping</span>
|
||||
<span class='ocrx_word' id='word_1_26' title='bbox 1325 515 1415 545; x_wconf 96'>down</span>
|
||||
<span class='ocrx_word' id='word_1_27' title='bbox 1446 526 1479 545; x_wconf 95'>so</span>
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 1508 526 1540 546; x_wconf 95'>as</span>
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 1508 526 1541 546; x_wconf 96'>as</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_7' title="bbox 827 568 1536 612; baseline 0.007 -14; x_size 41; x_descenders 10; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_29' title='bbox 827 568 882 599; x_wconf 96'>the</span>
|
||||
@@ -70,82 +70,82 @@
|
||||
<span class='ocrx_word' id='word_1_31' title='bbox 1063 571 1217 601; x_wconf 92'>wouldn’t</span>
|
||||
<span class='ocrx_word' id='word_1_32' title='bbox 1238 581 1345 612; x_wconf 96'>scrape</span>
|
||||
<span class='ocrx_word' id='word_1_33' title='bbox 1360 582 1418 602; x_wconf 96'>our</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 1433 572 1536 603; x_wconf 96'>heads.</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 1433 572 1536 603; x_wconf 95'>heads.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_8' title="bbox 829 625 1540 670; baseline 0.007 -14; x_size 41; x_descenders 10; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 829 625 934 657; x_wconf 96'>When</span>
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 956 637 1001 658; x_wconf 96'>we</span>
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 1024 638 1086 658; x_wconf 95'>was</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 1120 629 1249 669; x_wconf 95'>passing</span>
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 1024 638 1086 658; x_wconf 94'>was</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 1120 629 1249 669; x_wconf 94'>passing</span>
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 1270 629 1310 670; x_wconf 96'>by</span>
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 1333 629 1387 660; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 1411 629 1540 661; x_wconf 96'>kitchen</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_9' title="bbox 828 682 1535 718; baseline 0.006 -5; x_size 39.983448; x_descenders 9.983448; x_ascenders 10">
|
||||
<span class='ocr_line' id='line_1_9' title="bbox 828 682 1535 718; baseline 0.006 -5; x_size 40.095535; x_descenders 10.095533; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_42' title='bbox 828 682 845 713; x_wconf 96'>I</span>
|
||||
<span class='ocrx_word' id='word_1_43' title='bbox 873 684 929 715; x_wconf 96'>fell</span>
|
||||
<span class='ocrx_word' id='word_1_44' title='bbox 959 695 1031 716; x_wconf 96'>over</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 1053 695 1071 716; x_wconf 95'>a</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 1092 689 1168 716; x_wconf 58'>root</span>
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 1197 687 1258 717; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 1289 687 1380 718; x_wconf 96'>made</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 1402 698 1419 717; x_wconf 96'>a</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 1053 695 1071 716; x_wconf 93'>a</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 1092 689 1168 716; x_wconf 63'>root</span>
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 1197 687 1258 717; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 1289 687 1380 718; x_wconf 95'>made</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 1402 698 1419 717; x_wconf 95'>a</span>
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 1442 687 1535 717; x_wconf 96'>noise.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 828 739 1541 777; baseline 0.006 -6; x_size 41.983448; x_descenders 9.983448; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 828 739 885 771; x_wconf 61'>We</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 929 742 1103 773; x_wconf 61'>scrouched</span>
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 828 739 1541 777; baseline 0.006 -6; x_size 42.095535; x_descenders 10.095533; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 828 739 885 771; x_wconf 82'>We</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 929 742 1103 773; x_wconf 0'>crouched</span>
|
||||
<span class='ocrx_word' id='word_1_53' title='bbox 1140 743 1230 773; x_wconf 96'>down</span>
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 1268 744 1332 774; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 1364 744 1428 774; x_wconf 61'>laid</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 1463 744 1541 777; x_wconf 61'>still.</span>
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 1268 744 1332 774; x_wconf 94'>and</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 1364 744 1428 774; x_wconf 65'>laid</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 1463 744 1541 777; x_wconf 65'>still.</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 828 798 1540 842; baseline 0.006 -14; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 828 798 906 829; x_wconf 87'>Miss</span>
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 948 800 1105 830; x_wconf 87'>Watson’s</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 1155 800 1209 841; x_wconf 87'>big</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 1258 801 1380 842; x_wconf 87'>nigger,</span>
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 828 798 906 829; x_wconf 84'>Miss</span>
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 948 800 1105 830; x_wconf 84'>Watson’s</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 1155 800 1209 841; x_wconf 85'>big</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 1258 801 1380 842; x_wconf 85'>nigger,</span>
|
||||
<span class='ocrx_word' id='word_1_61' title='bbox 1426 802 1540 832; x_wconf 96'>named</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 828 855 1540 897; baseline 0.006 -12; x_size 37; x_descenders 7; x_ascenders 10">
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 828 855 1540 897; baseline 0.004 -12; x_size 40; x_descenders 10; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_62' title='bbox 828 855 908 893; x_wconf 96'>Jim,</span>
|
||||
<span class='ocrx_word' id='word_1_63' title='bbox 927 866 987 887; x_wconf 93'>was</span>
|
||||
<span class='ocrx_word' id='word_1_64' title='bbox 1016 857 1135 897; x_wconf 96'>setting</span>
|
||||
<span class='ocrx_word' id='word_1_65' title='bbox 1154 857 1187 887; x_wconf 96'>in</span>
|
||||
<span class='ocrx_word' id='word_1_66' title='bbox 1210 858 1265 888; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 1287 858 1420 889; x_wconf 95'>kitchen</span>
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 1442 858 1540 896; x_wconf 83'>door</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 1511 851 1537 901; x_wconf 83'>;</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 1287 858 1420 889; x_wconf 96'>kitchen</span>
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 1442 858 1540 896; x_wconf 82'>door</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 1512 851 1538 902; x_wconf 82'>;</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 830 914 1540 954; baseline 0.003 -11; x_size 39; x_descenders 9; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_70' title='bbox 830 923 876 944; x_wconf 96'>we</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 898 914 992 944; x_wconf 95'>could</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 898 914 992 944; x_wconf 96'>could</span>
|
||||
<span class='ocrx_word' id='word_1_72' title='bbox 1014 925 1063 946; x_wconf 96'>see</span>
|
||||
<span class='ocrx_word' id='word_1_73' title='bbox 1078 914 1146 945; x_wconf 96'>him</span>
|
||||
<span class='ocrx_word' id='word_1_74' title='bbox 1163 917 1267 954; x_wconf 96'>pretty</span>
|
||||
<span class='ocrx_word' id='word_1_75' title='bbox 1292 916 1384 952; x_wconf 96'>clear,</span>
|
||||
<span class='ocrx_word' id='word_1_76' title='bbox 1411 915 1540 946; x_wconf 96'>because</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 832 967 1540 1010; baseline 0.003 -12; x_size 39.484276; x_descenders 9.4842758; x_ascenders 11">
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 832 967 1540 1010; baseline 0.003 -12; x_size 39.590755; x_descenders 9.5907564; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 832 967 921 999; x_wconf 95'>there</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 944 979 1004 999; x_wconf 95'>was</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 1037 979 1054 999; x_wconf 94'>a</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 1084 969 1167 1010; x_wconf 96'>light</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 1037 979 1054 999; x_wconf 92'>a</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 1085 969 1167 1010; x_wconf 96'>light</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 1200 969 1317 1000; x_wconf 96'>behind</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 1351 970 1429 1000; x_wconf 89'>him.</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 1490 970 1540 1001; x_wconf 89'>He</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 1351 970 1429 1000; x_wconf 90'>him.</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 1490 970 1540 1001; x_wconf 90'>He</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 834 1026 1540 1066; baseline 0.003 -11; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 834 1027 889 1065; x_wconf 94'>got</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 834 1027 889 1065; x_wconf 95'>got</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 926 1036 970 1066; x_wconf 94'>up</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 1005 1026 1066 1057; x_wconf 65'>and</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 1103 1026 1261 1057; x_wconf 66'>stretched</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 1005 1026 1066 1057; x_wconf 60'>and</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 1103 1026 1261 1057; x_wconf 78'>stretched</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 1297 1026 1346 1057; x_wconf 96'>his</span>
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 1369 1026 1447 1057; x_wconf 96'>neck</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 1484 1029 1540 1057; x_wconf 96'>out</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_16' title="bbox 833 1082 1539 1123; baseline 0.003 -11; x_size 41; x_descenders 10; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 833 1082 931 1113; x_wconf 95'>about</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 833 1082 931 1113; x_wconf 96'>about</span>
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 954 1092 972 1113; x_wconf 96'>a</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 992 1083 1128 1120; x_wconf 96'>minute,</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 1160 1083 1319 1123; x_wconf 93'>listening.</span>
|
||||
@@ -158,8 +158,8 @@
|
||||
</p>
|
||||
|
||||
<p class='ocr_par' id='par_1_5' lang='eng' title="bbox 895 1197 1127 1229">
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 895 1197 1127 1229; baseline 0.004 -1; x_size 40.983448; x_descenders 9.983448; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 895 1197 1009 1228; x_wconf 0'>“Who</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 895 1197 1127 1229; baseline 0.004 -1; x_size 41.095535; x_descenders 10.095533; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 895 1197 1009 1228; x_wconf 4'>“Who</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 1024 1198 1127 1229; x_wconf 93'>dah?”</span>
|
||||
</span>
|
||||
</p>
|
||||
@@ -170,15 +170,15 @@
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 972 1255 1107 1286; x_wconf 96'>listened</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 1130 1264 1215 1285; x_wconf 96'>some</span>
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 1245 1264 1351 1294; x_wconf 96'>more;</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 1387 1255 1463 1286; x_wconf 94'>then</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 1501 1255 1538 1285; x_wconf 94'>he</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 1387 1255 1463 1286; x_wconf 92'>then</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 1501 1255 1538 1285; x_wconf 92'>he</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 830 1312 1537 1352; baseline 0.001 -10; x_size 40; x_descenders 10; x_ascenders 9">
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 830 1321 918 1343; x_wconf 62'>come</span>
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 971 1312 1142 1352; x_wconf 62'>tip-toeing</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 1191 1313 1281 1343; x_wconf 90'>down</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 1333 1313 1396 1343; x_wconf 67'>and_</span>
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 1448 1313 1537 1343; x_wconf 95'>stood</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 830 1321 918 1343; x_wconf 60'>come</span>
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 971 1312 1142 1352; x_wconf 70'>tip-toeing</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 1191 1313 1281 1343; x_wconf 91'>down</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 1333 1313 1396 1343; x_wconf 73'>and_</span>
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 1448 1313 1537 1343; x_wconf 96'>stood</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_21' title="bbox 829 1367 1537 1408; baseline 0.001 -11; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_111' title='bbox 829 1367 916 1408; x_wconf 96'>right</span>
|
||||
@@ -195,10 +195,10 @@
|
||||
<span class='ocrx_word' id='word_1_120' title='bbox 1087 1425 1179 1463; x_wconf 95'>Well,</span>
|
||||
<span class='ocrx_word' id='word_1_121' title='bbox 1203 1425 1300 1465; x_wconf 96'>likely</span>
|
||||
<span class='ocrx_word' id='word_1_122' title='bbox 1315 1425 1341 1455; x_wconf 95'>it</span>
|
||||
<span class='ocrx_word' id='word_1_123' title='bbox 1371 1435 1432 1455; x_wconf 91'>was</span>
|
||||
<span class='ocrx_word' id='word_1_124' title='bbox 1457 1425 1536 1455; x_wconf 91'>min-</span>
|
||||
<span class='ocrx_word' id='word_1_123' title='bbox 1371 1435 1432 1455; x_wconf 90'>was</span>
|
||||
<span class='ocrx_word' id='word_1_124' title='bbox 1457 1425 1536 1455; x_wconf 90'>min-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 829 1482 1538 1513; baseline -0.001 0; x_size 39.983448; x_descenders 9.983448; x_ascenders 10">
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 829 1482 1538 1513; baseline -0.001 0; x_size 40.095535; x_descenders 10.095533; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_125' title='bbox 829 1485 898 1513; x_wconf 95'>utes</span>
|
||||
<span class='ocrx_word' id='word_1_126' title='bbox 927 1483 989 1513; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_127' title='bbox 1018 1482 1158 1513; x_wconf 96'>minutes</span>
|
||||
@@ -207,22 +207,22 @@
|
||||
<span class='ocrx_word' id='word_1_130' title='bbox 1379 1482 1490 1512; x_wconf 92'>warn’t</span>
|
||||
<span class='ocrx_word' id='word_1_131' title='bbox 1519 1492 1538 1512; x_wconf 96'>a</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 826 1538 1535 1576; baseline -0.001 -7; x_size 37; x_descenders 6; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_132' title='bbox 826 1540 939 1576; x_wconf 96'>sound,</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 827 1538 1536 1576; baseline -0.001 -7; x_size 37; x_descenders 6; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_132' title='bbox 827 1540 939 1576; x_wconf 96'>sound,</span>
|
||||
<span class='ocrx_word' id='word_1_133' title='bbox 977 1539 1042 1570; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_134' title='bbox 1077 1549 1122 1570; x_wconf 96'>we</span>
|
||||
<span class='ocrx_word' id='word_1_135' title='bbox 1164 1539 1206 1569; x_wconf 95'>all</span>
|
||||
<span class='ocrx_word' id='word_1_136' title='bbox 1247 1538 1336 1569; x_wconf 95'>there</span>
|
||||
<span class='ocrx_word' id='word_1_137' title='bbox 1379 1548 1412 1569; x_wconf 63'>so</span>
|
||||
<span class='ocrx_word' id='word_1_138' title='bbox 1454 1538 1535 1569; x_wconf 63'>close</span>
|
||||
<span class='ocrx_word' id='word_1_135' title='bbox 1164 1539 1206 1569; x_wconf 96'>all</span>
|
||||
<span class='ocrx_word' id='word_1_136' title='bbox 1247 1538 1336 1569; x_wconf 96'>there</span>
|
||||
<span class='ocrx_word' id='word_1_137' title='bbox 1379 1548 1412 1569; x_wconf 59'>so</span>
|
||||
<span class='ocrx_word' id='word_1_138' title='bbox 1454 1538 1536 1569; x_wconf 59'>close</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_25' title="bbox 826 1593 1536 1635; baseline -0.001 -11; x_size 41; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_139' title='bbox 826 1593 980 1635; x_wconf 93'>together.</span>
|
||||
<span class='ocrx_word' id='word_1_140' title='bbox 1038 1594 1140 1624; x_wconf 67'>There</span>
|
||||
<span class='ocrx_word' id='word_1_139' title='bbox 826 1593 980 1635; x_wconf 92'>together.</span>
|
||||
<span class='ocrx_word' id='word_1_140' title='bbox 1038 1594 1140 1624; x_wconf 80'>There</span>
|
||||
<span class='ocrx_word' id='word_1_141' title='bbox 1170 1603 1232 1624; x_wconf 96'>was</span>
|
||||
<span class='ocrx_word' id='word_1_142' title='bbox 1256 1604 1275 1624; x_wconf 96'>a</span>
|
||||
<span class='ocrx_word' id='word_1_142' title='bbox 1256 1604 1275 1624; x_wconf 95'>a</span>
|
||||
<span class='ocrx_word' id='word_1_143' title='bbox 1303 1593 1391 1633; x_wconf 96'>place</span>
|
||||
<span class='ocrx_word' id='word_1_144' title='bbox 1421 1603 1462 1623; x_wconf 95'>on</span>
|
||||
<span class='ocrx_word' id='word_1_144' title='bbox 1421 1603 1462 1623; x_wconf 96'>on</span>
|
||||
<span class='ocrx_word' id='word_1_145' title='bbox 1484 1603 1536 1634; x_wconf 96'>my</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 826 1650 1534 1692; baseline -0.001 -11; x_size 42; x_descenders 11; x_ascenders 11">
|
||||
@@ -240,14 +240,14 @@
|
||||
<p class='ocr_par' id='par_1_7' lang='eng' title="bbox 78 1707 1535 1806">
|
||||
<span class='ocr_header' id='line_1_27' title="bbox 78 1707 1535 1749; baseline -0.001 -11; x_size 42; x_descenders 11; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_153' title='bbox 78 1708 181 1739; x_wconf 92'>dasn’t</span>
|
||||
<span class='ocrx_word' id='word_1_154' title='bbox 207 1708 329 1740; x_wconf 87'>scratch</span>
|
||||
<span class='ocrx_word' id='word_1_154' title='bbox 207 1708 329 1740; x_wconf 86'>scratch</span>
|
||||
<span class='ocrx_word' id='word_1_155' title='bbox 347 1709 385 1746; x_wconf 96'>it;</span>
|
||||
<span class='ocrx_word' id='word_1_156' title='bbox 408 1709 471 1739; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_157' title='bbox 494 1708 571 1739; x_wconf 96'>then</span>
|
||||
<span class='ocrx_word' id='word_1_158' title='bbox 593 1718 647 1749; x_wconf 96'>my</span>
|
||||
<span class='ocrx_word' id='word_1_159' title='bbox 661 1718 713 1739; x_wconf 96'>ear</span>
|
||||
<span class='ocrx_word' id='word_1_158' title='bbox 593 1718 647 1749; x_wconf 95'>my</span>
|
||||
<span class='ocrx_word' id='word_1_159' title='bbox 661 1718 713 1739; x_wconf 95'>ear</span>
|
||||
<span class='ocrx_word' id='word_1_160' title='bbox 739 1709 843 1748; x_wconf 95'>begun</span>
|
||||
<span class='ocrx_word' id='word_1_161' title='bbox 869 1710 901 1739; x_wconf 95'>to</span>
|
||||
<span class='ocrx_word' id='word_1_161' title='bbox 869 1710 901 1739; x_wconf 96'>to</span>
|
||||
<span class='ocrx_word' id='word_1_162' title='bbox 924 1708 1004 1746; x_wconf 96'>itch;</span>
|
||||
<span class='ocrx_word' id='word_1_163' title='bbox 1027 1709 1089 1739; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_164' title='bbox 1105 1710 1181 1740; x_wconf 96'>next</span>
|
||||
@@ -262,14 +262,14 @@
|
||||
<span class='ocrx_word' id='word_1_171' title='bbox 280 1766 452 1796; x_wconf 95'>shoulders.</span>
|
||||
<span class='ocrx_word' id='word_1_172' title='bbox 510 1765 638 1796; x_wconf 96'>Seemed</span>
|
||||
<span class='ocrx_word' id='word_1_173' title='bbox 663 1766 727 1796; x_wconf 93'>like</span>
|
||||
<span class='ocrx_word' id='word_1_174' title='bbox 755 1766 803 1796; x_wconf 49'>I’d</span>
|
||||
<span class='ocrx_word' id='word_1_174' title='bbox 755 1766 803 1796; x_wconf 67'>I’d</span>
|
||||
<span class='ocrx_word' id='word_1_175' title='bbox 827 1766 877 1796; x_wconf 96'>die</span>
|
||||
<span class='ocrx_word' id='word_1_176' title='bbox 901 1765 927 1796; x_wconf 96'>if</span>
|
||||
<span class='ocrx_word' id='word_1_177' title='bbox 951 1766 966 1796; x_wconf 89'>I</span>
|
||||
<span class='ocrx_word' id='word_1_177' title='bbox 951 1766 966 1796; x_wconf 92'>I</span>
|
||||
<span class='ocrx_word' id='word_1_178' title='bbox 990 1766 1132 1796; x_wconf 89'>couldn’t</span>
|
||||
<span class='ocrx_word' id='word_1_179' title='bbox 1158 1766 1291 1796; x_wconf 95'>scratch.</span>
|
||||
<span class='ocrx_word' id='word_1_180' title='bbox 1351 1765 1443 1803; x_wconf 88'>Well,</span>
|
||||
<span class='ocrx_word' id='word_1_181' title='bbox 1470 1765 1534 1796; x_wconf 54'>I’ve</span>
|
||||
<span class='ocrx_word' id='word_1_181' title='bbox 1470 1765 1534 1796; x_wconf 72'>I’ve</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -289,13 +289,13 @@
|
||||
<div class='ocr_carea' id='block_1_7' title="bbox 865 1822 1534 1864">
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 865 1822 1534 1864">
|
||||
<span class='ocr_line' id='line_1_30' title="bbox 865 1822 1534 1864; baseline 0 -11; x_size 41; x_descenders 10; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_189' title='bbox 865 1822 897 1853; x_wconf 71'>Tf</span>
|
||||
<span class='ocrx_word' id='word_1_189' title='bbox 865 1822 897 1853; x_wconf 66'>If</span>
|
||||
<span class='ocrx_word' id='word_1_190' title='bbox 919 1833 980 1864; x_wconf 96'>you</span>
|
||||
<span class='ocrx_word' id='word_1_191' title='bbox 1004 1833 1055 1854; x_wconf 96'>are</span>
|
||||
<span class='ocrx_word' id='word_1_192' title='bbox 1071 1823 1147 1854; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_193' title='bbox 1173 1823 1227 1853; x_wconf 96'>the</span>
|
||||
<span class='ocrx_word' id='word_1_194' title='bbox 1249 1822 1382 1863; x_wconf 95'>quality,</span>
|
||||
<span class='ocrx_word' id='word_1_195' title='bbox 1401 1833 1437 1852; x_wconf 95'>or</span>
|
||||
<span class='ocrx_word' id='word_1_194' title='bbox 1249 1822 1382 1863; x_wconf 96'>quality,</span>
|
||||
<span class='ocrx_word' id='word_1_195' title='bbox 1401 1833 1437 1852; x_wconf 96'>or</span>
|
||||
<span class='ocrx_word' id='word_1_196' title='bbox 1461 1824 1492 1853; x_wconf 96'>at</span>
|
||||
<span class='ocrx_word' id='word_1_197' title='bbox 1515 1833 1534 1853; x_wconf 96'>a</span>
|
||||
</span>
|
||||
@@ -317,7 +317,7 @@
|
||||
<span class='ocrx_word' id='word_1_208' title='bbox 994 1880 1167 1921; x_wconf 91'>sleepy—if</span>
|
||||
<span class='ocrx_word' id='word_1_209' title='bbox 1194 1890 1256 1921; x_wconf 96'>you</span>
|
||||
<span class='ocrx_word' id='word_1_210' title='bbox 1278 1890 1330 1911; x_wconf 93'>are</span>
|
||||
<span class='ocrx_word' id='word_1_211' title='bbox 1353 1879 1533 1921; x_wconf 91'>anywheres</span>
|
||||
<span class='ocrx_word' id='word_1_211' title='bbox 1353 1879 1533 1921; x_wconf 92'>anywheres</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
|
||||
Detected 60 diacritics
|
||||
Detected 98 diacritics
|
||||
|
||||
+4
-4
@@ -2,15 +2,15 @@
|
||||
|
||||
THEY TIP-TOED ALONG.
|
||||
|
||||
ee .
|
||||
Se We went tip-toeing along a path amongst
|
||||
al .
|
||||
SE We went tip-toeing along a path amongst
|
||||
|
||||
the trees back towards the end of the
|
||||
widow’s garden, stooping down so as
|
||||
the branches wouldn’t scrape our heads.
|
||||
When we was passing by the kitchen
|
||||
I fell over a root and made a noise.
|
||||
We scrouched down and laid still.
|
||||
We crouched down and laid still.
|
||||
Miss Watson’s big nigger, named
|
||||
Jim, was setting in the kitchen door ;
|
||||
we could see him pretty clear, because
|
||||
@@ -35,7 +35,7 @@ tween my shoulders. Seemed like I’d die if I couldn’t scratch. Well, I’ve
|
||||
|
||||
noticed that thing plenty of times since.
|
||||
|
||||
Tf you are with the quality, or at a
|
||||
If you are with the quality, or at a
|
||||
|
||||
funeral, or trying to go to sleep when you ain’t sleepy—if you are anywheres
|
||||
|
||||
BIN
Binary file not shown.
+1
-1
@@ -1,2 +1,2 @@
|
||||
Tesseract Open Source OCR Engine v4.1.1 with Leptonica
|
||||
Detected 60 diacritics
|
||||
Detected 98 diacritics
|
||||
|
||||
+4
-4
@@ -2,15 +2,15 @@
|
||||
|
||||
THEY TIP-TOED ALONG.
|
||||
|
||||
ee .
|
||||
Se We went tip-toeing along a path amongst
|
||||
al .
|
||||
SE We went tip-toeing along a path amongst
|
||||
|
||||
the trees back towards the end of the
|
||||
widow’s garden, stooping down so as
|
||||
the branches wouldn’t scrape our heads.
|
||||
When we was passing by the kitchen
|
||||
I fell over a root and made a noise.
|
||||
We scrouched down and laid still.
|
||||
We crouched down and laid still.
|
||||
Miss Watson’s big nigger, named
|
||||
Jim, was setting in the kitchen door ;
|
||||
we could see him pretty clear, because
|
||||
@@ -35,7 +35,7 @@ tween my shoulders. Seemed like I’d die if I couldn’t scratch. Well, I’ve
|
||||
|
||||
noticed that thing plenty of times since.
|
||||
|
||||
Tf you are with the quality, or at a
|
||||
If you are with the quality, or at a
|
||||
|
||||
funeral, or trying to go to sleep when you ain’t sleepy—if you are anywheres
|
||||
|
||||
+52
-51
@@ -9,16 +9,16 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.sh2wg519/000003_ocr.png"; bbox 0 0 2272 1848; ppageno 0'>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.ym6m0ql4/000003_ocr.png"; bbox 0 0 2272 1848; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 201 38 2167 118">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 201 38 2167 118">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 201 38 2167 118; baseline -0.001 -17; x_size 79; x_descenders 17; x_ascenders 16">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 201 38 2167 118; baseline -0.001 -17; x_size 80; x_descenders 18; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_1' title='bbox 201 39 687 117; x_wconf 96'>Replacement</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 715 38 784 101; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 808 39 1289 101; x_wconf 95'>"creationism"</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 715 38 784 101; x_wconf 95'>of</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 808 39 1289 101; x_wconf 90'>"creationism"</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 1316 39 1458 101; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 1491 39 1869 118; x_wconf 96'>"intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 1897 39 2167 118; x_wconf 92'>design"</span>
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 1491 39 1869 118; x_wconf 91'>"intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 1897 39 2167 118; x_wconf 93'>design"</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -76,21 +76,21 @@
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_9' title="bbox 46 186 2166 1783">
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 46 186 2166 1783">
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 347 186 418 221; baseline 0.014 -1; x_size 41.772797; x_descenders 7.7727985; x_ascenders 9.3380537">
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 347 186 418 221; baseline 0.014 -1; x_size 41.810249; x_descenders 7.8102489; x_ascenders 9.3344307">
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 347 186 418 221; x_wconf 96'>120</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 347 383 458 417; baseline 0.009 0; x_size 41.772797; x_descenders 7.7727985; x_ascenders 9.3380537">
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 347 383 458 417; baseline 0.009 0; x_size 41.810249; x_descenders 7.8102489; x_ascenders 9.3344307">
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 347 383 418 417; x_wconf 93'>100</span>
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 441 399 458 403; x_wconf 92'>-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 245 574 416 648; baseline 0.01 -36.793; x_size 41.772797; x_descenders 7.7727985; x_ascenders 9.3380537">
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 245 574 416 648; baseline 0.01 -36.793; x_size 41.810249; x_descenders 7.8102489; x_ascenders 9.3344307">
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 245 574 265 648; x_wconf 29'>Cc</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 370 579 416 613; x_wconf 96'>80</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 239 655 285 690; baseline 0 0; x_size 43.001411; x_descenders 8.0014105; x_ascenders 9.6127024">
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 239 655 285 690; baseline 0 0; x_size 43.039963; x_descenders 8.0399618; x_ascenders 9.6089735">
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 239 655 285 690; x_wconf 54'>></span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 238 699 285 781; baseline 0 0; x_size 100.74616; x_descenders 18.746162; x_ascenders 22.521189">
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 238 699 285 781; baseline 0 0; x_size 100.83649; x_descenders 18.836483; x_ascenders 22.512451">
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 238 699 285 781; x_wconf 39'>5</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 223 774 1361 852; baseline 0.006 -41; x_size 51; x_descenders 9; x_ascenders 11">
|
||||
@@ -113,15 +113,15 @@
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 800 910 980 962; x_wconf 96'>"design</span>
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 1003 910 1270 962; x_wconf 66'>proponent"</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 368 972 458 1007; baseline 0.022 -1; x_size 43.001411; x_descenders 8.0014105; x_ascenders 9.6127024">
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 368 972 458 1007; baseline 0.022 -1; x_size 43.039963; x_descenders 8.0399618; x_ascenders 9.6089735">
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 368 972 418 1007; x_wconf 90'>40</span>
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 441 988 458 992; x_wconf 90'>-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 368 1168 458 1203; baseline 0.022 -1; x_size 43.001411; x_descenders 8.0014105; x_ascenders 9.6127024">
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 368 1168 458 1203; baseline 0.022 -1; x_size 43.039963; x_descenders 8.0399618; x_ascenders 9.6089735">
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 368 1168 418 1203; x_wconf 91'>20</span>
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 441 1185 458 1189; x_wconf 89'>-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 604 1311 1867 1384; baseline 0.013 -43.595; x_size 31.727608; x_descenders 4.7276068; x_ascenders 12">
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 604 1311 1867 1384; baseline 0.013 -43.595; x_size 31.749687; x_descenders 4.7496872; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 604 1311 838 1367; x_wconf 48'>—@—</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 1767 1325 1867 1384; x_wconf 40'>—@®</span>
|
||||
</span>
|
||||
@@ -135,7 +135,7 @@
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 1849 1381 1875 1402; x_wconf 0'>w</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 2119 1332 2166 1402; x_wconf 32'>°</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 383 1418 2157 1502; baseline 0 -16; x_size 68.031082; x_descenders 11.031082; x_ascenders 22">
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 383 1418 2157 1502; baseline 0 -16; x_size 68.082603; x_descenders 11.082603; x_ascenders 22">
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 383 1418 474 1502; x_wconf 48'>gp)</span>
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 682 1418 741 1502; x_wconf 28'>ee)</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 979 1422 1035 1486; x_wconf 16'>0</span>
|
||||
@@ -172,48 +172,49 @@
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 1697 1553 1724 1580; x_wconf 24'>&</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 1945 1553 2005 1608; x_wconf 26'>s?</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 201 1582 1949 1654; baseline -0.003 -32; x_size 38; x_descenders 8; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 201 1595 272 1654; x_wconf 86'>ge</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 497 1587 565 1648; x_wconf 47'>ee</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 788 1583 806 1650; x_wconf 17'>Oo</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 1073 1582 1103 1642; x_wconf 59'>ss</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 1357 1583 1373 1642; x_wconf 45'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 1631 1589 1670 1630; x_wconf 39'>Ne</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 1878 1583 1949 1653; x_wconf 82'>qs</span>
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 227 1586 1953 1662; baseline 0.009 -29; x_size 67; x_descenders 16; x_ascenders 22">
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 227 1595 261 1633; x_wconf 61'>30</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 512 1587 565 1634; x_wconf 9'>Ce</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 770 1592 835 1646; x_wconf 22'>o</span>
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 1075 1586 1095 1661; x_wconf 46'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 1343 1587 1381 1662; x_wconf 57'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 1640 1589 1681 1630; x_wconf 19'>°</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 1894 1598 1953 1649; x_wconf 54'>se</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 466 1629 1896 1680; baseline 0 -14; x_size 51; x_descenders 14; x_ascenders 9">
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 466 1629 503 1666; x_wconf 92'>G</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 733 1645 772 1680; x_wconf 66'>%</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 1035 1638 1062 1666; x_wconf 47'>S</span>
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 1315 1638 1343 1666; x_wconf 80'>S</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 1601 1633 1628 1661; x_wconf 42'>©</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 1869 1644 1896 1672; x_wconf 82'>S</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 201 1614 1896 1672; baseline 0.014 -18; x_size 52; x_descenders 12; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 201 1614 241 1654; x_wconf 55'>©</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 467 1619 512 1666; x_wconf 6'>os</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 1035 1638 1062 1666; x_wconf 82'>S</span>
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 1315 1638 1343 1666; x_wconf 53'>S</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 1602 1633 1628 1661; x_wconf 23'>2</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 1869 1644 1896 1672; x_wconf 64'>S</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_28' title="bbox 137 1650 1879 1708; baseline 0.004 -24; x_size 47; x_descenders 9; x_ascenders 15">
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 137 1651 200 1698; x_wconf 41'>Ros</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 428 1664 468 1700; x_wconf 73'>%</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 992 1655 1035 1701; x_wconf 51'>se</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 1273 1655 1315 1701; x_wconf 67'>se</span>
|
||||
<span class='ocrx_word' id='word_1_96' title='bbox 1558 1650 1606 1697; x_wconf 60'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_97' title='bbox 1816 1649 1849 1712; x_wconf 30'>AN</span>
|
||||
<span class='ocr_line' id='line_1_28' title="bbox 138 1642 1879 1708; baseline 0.005 -24.995; x_size 47; x_descenders 9; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 138 1670 182 1698; x_wconf 31'>Ro</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 428 1664 468 1700; x_wconf 48'>%</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 733 1645 772 1680; x_wconf 64'>&</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 992 1642 1046 1705; x_wconf 9'>NS</span>
|
||||
<span class='ocrx_word' id='word_1_96' title='bbox 1273 1655 1315 1701; x_wconf 67'>se</span>
|
||||
<span class='ocrx_word' id='word_1_97' title='bbox 1558 1650 1606 1697; x_wconf 60'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 1816 1649 1849 1712; x_wconf 30'>AN</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_29' title="bbox 114 1675 1834 1762; baseline 0.01 -27.99; x_size 59; x_descenders 10; x_ascenders 21">
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 114 1681 149 1748; x_wconf 30'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 364 1691 428 1762; x_wconf 47'>3s</span>
|
||||
<span class='ocrx_word' id='word_1_100' title='bbox 661 1675 730 1743; x_wconf 20'>S</span>
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 966 1687 984 1754; x_wconf 0'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 1242 1687 1261 1758; x_wconf 37'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 1516 1687 1557 1735; x_wconf 40'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 1795 1694 1814 1765; x_wconf 63'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 114 1681 149 1748; x_wconf 30'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_100' title='bbox 364 1691 428 1762; x_wconf 47'>3s</span>
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 661 1675 730 1743; x_wconf 20'>S</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 966 1687 984 1754; x_wconf 0'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 1242 1687 1261 1758; x_wconf 37'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 1516 1687 1557 1735; x_wconf 40'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 1795 1694 1814 1765; x_wconf 63'>Ss</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_30' title="bbox 46 1716 1778 1783; baseline 0.002 -17; x_size 38; x_descenders 7; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 46 1723 110 1783; x_wconf 26'>ow?</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 340 1735 380 1773; x_wconf 39'>\O</span>
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 620 1719 664 1783; x_wconf 26'>Xo)</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 913 1721 944 1763; x_wconf 9'>R</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 1194 1721 1225 1763; x_wconf 6'>g</span>
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 1479 1716 1510 1758; x_wconf 39'>g</span>
|
||||
<span class='ocrx_word' id='word_1_111' title='bbox 1747 1728 1778 1769; x_wconf 58'>Q</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 46 1723 110 1783; x_wconf 26'>ow?</span>
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 340 1735 380 1773; x_wconf 39'>\O</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 620 1719 664 1783; x_wconf 26'>Xo)</span>
|
||||
<span class='ocrx_word' id='word_1_109' title='bbox 913 1721 944 1763; x_wconf 9'>R</span>
|
||||
<span class='ocrx_word' id='word_1_110' title='bbox 1194 1721 1225 1763; x_wconf 6'>g</span>
|
||||
<span class='ocrx_word' id='word_1_111' title='bbox 1479 1716 1510 1758; x_wconf 39'>g</span>
|
||||
<span class='ocrx_word' id='word_1_112' title='bbox 1747 1728 1778 1769; x_wconf 58'>Q</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+3
-3
@@ -31,9 +31,9 @@ gp) ee) 0 oN g\ gD) op)
|
||||
oO NC) NC) LN eo N N
|
||||
S os o* vs ws os os
|
||||
cs) Re ss & ow x & s?
|
||||
ge ee Oo ss Ss Ne qs
|
||||
G % S S © S
|
||||
Ros % se se oe AN
|
||||
30 Ce o Ss Ss ° se
|
||||
© os S S 2 S
|
||||
Ro % & NS se oe AN
|
||||
Ss 3s S Ss Ss Ss Ss
|
||||
ow? \O Xo) R g g Q
|
||||
|
||||
BIN
Binary file not shown.
+3
-3
@@ -31,9 +31,9 @@ gp) ee) 0 oN g\ gD) op)
|
||||
oO NC) NC) LN eo N N
|
||||
S os o* vs ws os os
|
||||
cs) Re ss & ow x & s?
|
||||
ge ee Oo ss Ss Ne qs
|
||||
G % S S © S
|
||||
Ros % se se oe AN
|
||||
30 Ce o Ss Ss ° se
|
||||
© os S S 2 S
|
||||
Ro % & NS se oe AN
|
||||
Ss 3s S Ss Ss Ss Ss
|
||||
ow? \O Xo) R g g Q
|
||||
|
||||
+158
-141
@@ -9,189 +9,206 @@
|
||||
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word ocrp_wconf'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class='ocr_page' id='page_1' title='image "/var/folders/2s/7t022mgj0h5cprbq0dtb1ksm0000gn/T/ocrmypdf.io.sh2wg519/000004_ocr.png"; bbox 0 0 2272 1848; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 200 38 2168 120">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 200 38 2168 120">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 200 38 2168 120; baseline 0 -18; x_size 80; x_descenders 18; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_1' title='bbox 200 40 686 118; x_wconf 96'>Replacement</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 714 38 784 102; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 808 40 1290 102; x_wconf 94'>"creationism"</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 1316 40 1458 102; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 1490 40 1870 120; x_wconf 87'>"intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 1896 40 2168 120; x_wconf 94'>design"</span>
|
||||
<div class='ocr_page' id='page_1' title='image "/tmp/ocrmypdf.io.ym6m0ql4/000004_ocr.png"; bbox 0 0 3029 2464; ppageno 0'>
|
||||
<div class='ocr_carea' id='block_1_1' title="bbox 267 51 2891 160">
|
||||
<p class='ocr_par' id='par_1_1' lang='eng' title="bbox 267 51 2891 160">
|
||||
<span class='ocr_line' id='line_1_1' title="bbox 267 51 2891 160; baseline 0 -24; x_size 107; x_descenders 24; x_ascenders 22">
|
||||
<span class='ocrx_word' id='word_1_1' title='bbox 267 53 915 157; x_wconf 96'>Replacement</span>
|
||||
<span class='ocrx_word' id='word_1_2' title='bbox 952 51 1045 136; x_wconf 96'>of</span>
|
||||
<span class='ocrx_word' id='word_1_3' title='bbox 1077 53 1720 136; x_wconf 91'>"creationism"</span>
|
||||
<span class='ocrx_word' id='word_1_4' title='bbox 1755 53 1944 136; x_wconf 96'>with</span>
|
||||
<span class='ocrx_word' id='word_1_5' title='bbox 1987 53 2493 160; x_wconf 79'>"intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_6' title='bbox 2528 53 2891 160; x_wconf 95'>design"</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_2' title="bbox 442 204 2144 208">
|
||||
<p class='ocr_par' id='par_1_2' lang='eng' title="bbox 442 204 2144 208">
|
||||
<span class='ocr_line' id='line_1_2' title="bbox 442 204 2144 208; baseline 0 0; x_size 2; x_descenders -1; x_ascenders 1">
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 442 204 2144 208; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_2' title="bbox 589 272 2859 277">
|
||||
<p class='ocr_par' id='par_1_2' lang='eng' title="bbox 589 272 2859 277">
|
||||
<span class='ocr_line' id='line_1_2' title="bbox 589 272 2859 277; baseline 0 0; x_size 2.5; x_descenders -1.25; x_ascenders 1.25">
|
||||
<span class='ocrx_word' id='word_1_7' title='bbox 589 272 2859 277; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 436 224 2166 1358">
|
||||
<p class='ocr_par' id='par_1_3' lang='eng' title="bbox 436 224 2166 1358">
|
||||
<span class='ocr_line' id='line_1_3' title="bbox 436 224 2166 928; baseline 0 -82; x_size 830.66669; x_descenders 207.66667; x_ascenders 207.66667">
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 436 224 2166 928; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_3' title="bbox 581 299 2888 1809">
|
||||
<p class='ocr_par' id='par_1_3' lang='eng' title="bbox 581 299 2888 1809">
|
||||
<span class='ocr_line' id='line_1_3' title="bbox 581 299 2888 1237; baseline 0 -109; x_size 1106.6666; x_descenders 276.66666; x_ascenders 276.66666">
|
||||
<span class='ocrx_word' id='word_1_8' title='bbox 581 299 2888 1237; x_wconf 95'> </span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_4' title="bbox 930 928 1676 1358; baseline 0 -370; x_size 830.66669; x_descenders 207.66667; x_ascenders 207.66667">
|
||||
<span class='ocrx_word' id='word_1_9' title='bbox 930 928 1676 1358; x_wconf 95'> </span>
|
||||
<span class='ocr_line' id='line_1_4' title="bbox 1241 1237 2236 1809; baseline 0 -491; x_size 1106.6666; x_descenders 276.66666; x_ascenders 276.66666">
|
||||
<span class='ocrx_word' id='word_1_9' title='bbox 1241 1237 2236 1809; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_4' title="bbox 458 204 462 1334">
|
||||
<p class='ocr_par' id='par_1_4' lang='eng' title="bbox 458 204 462 1334">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 458 204 462 1334; baseline 0 0; x_size 565; x_descenders -282.5; x_ascenders 282.5">
|
||||
<span class='ocrx_word' id='word_1_10' title='bbox 458 204 462 1334; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_4' title="bbox 611 272 616 1779">
|
||||
<p class='ocr_par' id='par_1_4' lang='eng' title="bbox 611 272 616 1779">
|
||||
<span class='ocr_line' id='line_1_5' title="bbox 611 272 616 1779; baseline 0 0; x_size 753.5; x_descenders -376.75; x_ascenders 376.75">
|
||||
<span class='ocrx_word' id='word_1_10' title='bbox 611 272 616 1779; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_5' title="bbox 2140 204 2144 1334">
|
||||
<p class='ocr_par' id='par_1_5' lang='eng' title="bbox 2140 204 2144 1334">
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 2140 204 2144 1334; baseline 0 0; x_size 565; x_descenders -282.5; x_ascenders 282.5">
|
||||
<span class='ocrx_word' id='word_1_11' title='bbox 2140 204 2144 1334; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_5' title="bbox 2853 272 2859 1779">
|
||||
<p class='ocr_par' id='par_1_5' lang='eng' title="bbox 2853 272 2859 1779">
|
||||
<span class='ocr_line' id='line_1_6' title="bbox 2853 272 2859 1779; baseline 0 0; x_size 753.5; x_descenders -376.75; x_ascenders 376.75">
|
||||
<span class='ocrx_word' id='word_1_11' title='bbox 2853 272 2859 1779; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_6' title="bbox 482 1311 998 1355">
|
||||
<p class='ocr_par' id='par_1_6' lang='eng' title="bbox 482 1311 998 1355">
|
||||
<span class='ocr_line' id='line_1_7' title="bbox 482 1311 998 1355; baseline 0 0; x_size 22; x_descenders -11; x_ascenders 11">
|
||||
<span class='ocrx_word' id='word_1_12' title='bbox 482 1311 998 1355; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_6' title="bbox 643 1744 1331 1808">
|
||||
<p class='ocr_par' id='par_1_6' lang='eng' title="bbox 643 1744 1331 1808">
|
||||
<span class='ocr_line' id='line_1_7' title="bbox 643 1744 1331 1808; baseline 0 0; x_size 32; x_descenders -16; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_12' title='bbox 643 1744 1331 1808; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_7' title="bbox 1604 1335 2120 1358">
|
||||
<p class='ocr_par' id='par_1_7' lang='eng' title="bbox 1604 1335 2120 1358">
|
||||
<span class='ocr_line' id='line_1_8' title="bbox 1604 1335 2120 1358; baseline 0 0; x_size 11.5; x_descenders -5.75; x_ascenders 5.75">
|
||||
<span class='ocrx_word' id='word_1_13' title='bbox 1604 1335 2120 1358; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_7' title="bbox 2139 1777 2827 1805">
|
||||
<p class='ocr_par' id='par_1_7' lang='eng' title="bbox 2139 1777 2827 1805">
|
||||
<span class='ocr_line' id='line_1_8' title="bbox 2139 1777 2827 1805; baseline 0 0; x_size 14; x_descenders -7; x_ascenders 7">
|
||||
<span class='ocrx_word' id='word_1_13' title='bbox 2139 1777 2827 1805; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_8' title="bbox 472 1382 2144 1386">
|
||||
<p class='ocr_par' id='par_1_8' lang='eng' title="bbox 472 1382 2144 1386">
|
||||
<span class='ocr_line' id='line_1_9' title="bbox 472 1382 2144 1386; baseline 0 0; x_size 2; x_descenders -1; x_ascenders 1">
|
||||
<span class='ocrx_word' id='word_1_14' title='bbox 472 1382 2144 1386; x_wconf 95'> </span>
|
||||
<div class='ocr_carea' id='block_1_8' title="bbox 624 1843 2859 1848">
|
||||
<p class='ocr_par' id='par_1_8' lang='eng' title="bbox 624 1843 2859 1848">
|
||||
<span class='ocr_line' id='line_1_9' title="bbox 624 1843 2859 1848; baseline 0 0; x_size 2.5; x_descenders -1.25; x_ascenders 1.25">
|
||||
<span class='ocrx_word' id='word_1_14' title='bbox 624 1843 2859 1848; x_wconf 95'> </span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='ocr_carea' id='block_1_9' title="bbox 46 186 2166 1784">
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 46 186 2166 1784">
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 346 186 418 222; baseline 0 0; x_size 44.342644; x_descenders 8.3426456; x_ascenders 10.251094">
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 346 186 418 222; x_wconf 96'>120</span>
|
||||
<div class='ocr_carea' id='block_1_9' title="bbox 61 248 2888 2383">
|
||||
<p class='ocr_par' id='par_1_9' lang='eng' title="bbox 61 248 2888 2379">
|
||||
<span class='ocr_line' id='line_1_10' title="bbox 461 248 557 296; baseline 0 0; x_size 59.867271; x_descenders 11.867271; x_ascenders 13.821959">
|
||||
<span class='ocrx_word' id='word_1_15' title='bbox 461 248 557 296; x_wconf 96'>120</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 346 384 458 418; baseline 0 0; x_size 53.816177; x_descenders 10.125; x_ascenders 12.441176">
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 346 384 418 418; x_wconf 95'>100</span>
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 442 400 458 404; x_wconf 76'>4</span>
|
||||
<span class='ocr_line' id='line_1_11' title="bbox 461 512 611 557; baseline 0.007 0; x_size 71.707344; x_descenders 14.214286; x_ascenders 16.555555">
|
||||
<span class='ocrx_word' id='word_1_16' title='bbox 461 512 557 557; x_wconf 93'>100</span>
|
||||
<span class='ocrx_word' id='word_1_17' title='bbox 589 533 611 539; x_wconf 90'>-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 226 580 418 644; baseline 0 -30; x_size 53.816177; x_descenders 10.125; x_ascenders 12.441176">
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 226 580 284 644; x_wconf 74'>=</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 370 580 418 614; x_wconf 85'>80</span>
|
||||
<span class='ocr_line' id='line_1_12' title="bbox 328 768 555 863; baseline 0.008 -45.789; x_size 57.372803; x_descenders 11.372803; x_ascenders 13.246043">
|
||||
<span class='ocrx_word' id='word_1_18' title='bbox 328 768 353 863; x_wconf 28'>Cc</span>
|
||||
<span class='ocrx_word' id='word_1_19' title='bbox 493 773 555 819; x_wconf 94'>80</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 240 654 284 690; baseline 0 0; x_size 44.342644; x_descenders 8.3426456; x_ascenders 10.251094">
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 240 654 284 690; x_wconf 19'>—</span>
|
||||
<span class='ocr_line' id='line_1_13' title="bbox 320 872 379 920; baseline 0 0; x_size 59.867271; x_descenders 11.867271; x_ascenders 13.821959">
|
||||
<span class='ocrx_word' id='word_1_20' title='bbox 320 872 379 920; x_wconf 52'>—</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 238 700 284 782; baseline 0 0; x_size 101.00269; x_descenders 19.002691; x_ascenders 23.349714">
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 238 700 284 782; x_wconf 12'>S</span>
|
||||
<span class='ocr_line' id='line_1_14' title="bbox 317 933 379 1043; baseline 0 0; x_size 137.19583; x_descenders 27.195831; x_ascenders 31.67532">
|
||||
<span class='ocrx_word' id='word_1_21' title='bbox 317 933 379 1043; x_wconf 81'>©</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 222 774 1360 852; baseline 0 -34; x_size 51.720001; x_descenders 9.7200003; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_22' title='bbox 222 814 284 852; x_wconf 29'>_</span>
|
||||
<span class='ocrx_word' id='word_1_23' title='bbox 368 776 458 810; x_wconf 43'>6047</span>
|
||||
<span class='ocrx_word' id='word_1_24' title='bbox 526 774 662 822; x_wconf 73'>—@—</span>
|
||||
<span class='ocrx_word' id='word_1_25' title='bbox 690 776 940 818; x_wconf 95'>"Creation"</span>
|
||||
<span class='ocrx_word' id='word_1_26' title='bbox 960 776 1048 818; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_27' title='bbox 1068 776 1360 818; x_wconf 93'>"creationist"</span>
|
||||
<span class='ocr_line' id='line_1_15' title="bbox 301 1026 1813 1140; baseline 0.004 -54.98; x_size 67; x_descenders 11; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_22' title='bbox 301 1026 359 1140; x_wconf 32'>oO</span>
|
||||
<span class='ocrx_word' id='word_1_23' title='bbox 491 1035 611 1080; x_wconf 51'>607</span>
|
||||
<span class='ocrx_word' id='word_1_24' title='bbox 701 1032 883 1096; x_wconf 69'>—@—</span>
|
||||
<span class='ocrx_word' id='word_1_25' title='bbox 920 1035 1253 1091; x_wconf 95'>"Creation"</span>
|
||||
<span class='ocrx_word' id='word_1_26' title='bbox 1280 1035 1397 1091; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_27' title='bbox 1424 1035 1813 1091; x_wconf 92'>"creationist"</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_16' title="bbox 238 844 1150 926; baseline -0.004 -34; x_size 60; x_descenders 12; x_ascenders 17">
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 238 854 284 926; x_wconf 91'>5</span>
|
||||
<span class='ocrx_word' id='word_1_29' title='bbox 528 844 662 892; x_wconf 58'>—@—</span>
|
||||
<span class='ocrx_word' id='word_1_30' title='bbox 690 848 950 900; x_wconf 96'>"Intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_31' title='bbox 966 848 1150 900; x_wconf 96'>design"</span>
|
||||
<span class='ocr_line' id='line_1_16' title="bbox 317 1125 1533 1235; baseline -0.001 -50; x_size 80; x_descenders 16; x_ascenders 22">
|
||||
<span class='ocrx_word' id='word_1_28' title='bbox 317 1139 379 1235; x_wconf 90'>5</span>
|
||||
<span class='ocrx_word' id='word_1_29' title='bbox 704 1125 883 1189; x_wconf 80'>—@—</span>
|
||||
<span class='ocrx_word' id='word_1_30' title='bbox 920 1131 1267 1200; x_wconf 96'>"Intelligent</span>
|
||||
<span class='ocrx_word' id='word_1_31' title='bbox 1288 1131 1533 1200; x_wconf 95'>design"</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_17' title="bbox 690 910 1270 962; baseline 0 -10; x_size 52; x_descenders 10; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_32' title='bbox 690 910 778 952; x_wconf 96'>and</span>
|
||||
<span class='ocrx_word' id='word_1_33' title='bbox 800 910 980 962; x_wconf 96'>"design</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 1002 910 1270 962; x_wconf 80'>proponent"</span>
|
||||
<span class='ocr_line' id='line_1_17' title="bbox 920 1213 1693 1283; baseline 0 -14; x_size 70; x_descenders 14; x_ascenders 14">
|
||||
<span class='ocrx_word' id='word_1_32' title='bbox 920 1213 1037 1269; x_wconf 95'>and</span>
|
||||
<span class='ocrx_word' id='word_1_33' title='bbox 1067 1213 1307 1283; x_wconf 95'>"design</span>
|
||||
<span class='ocrx_word' id='word_1_34' title='bbox 1336 1213 1693 1283; x_wconf 92'>proponent"</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 222 930 458 1008; baseline -0.004 0; x_size 96.075729; x_descenders 18.075733; x_ascenders 22.210703">
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 222 930 284 1008; x_wconf 82'>S</span>
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 368 972 458 1008; x_wconf 48'>«4</span>
|
||||
<span class='ocr_line' id='line_1_18' title="bbox 296 1240 611 1344; baseline 0 -1; x_size 129.71242; x_descenders 25.712423; x_ascenders 29.947577">
|
||||
<span class='ocrx_word' id='word_1_35' title='bbox 296 1240 379 1344; x_wconf 81'>S</span>
|
||||
<span class='ocrx_word' id='word_1_36' title='bbox 491 1296 611 1344; x_wconf 41'>40-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 368 1168 458 1204; baseline 0.022 -2; x_size 44.342644; x_descenders 8.3426456; x_ascenders 10.251094">
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 368 1168 418 1204; x_wconf 92'>20</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 442 1184 458 1190; x_wconf 81'>-</span>
|
||||
<span class='ocr_line' id='line_1_19' title="bbox 491 1557 611 1605; baseline 0.025 -2; x_size 59.867271; x_descenders 11.867271; x_ascenders 13.821959">
|
||||
<span class='ocrx_word' id='word_1_37' title='bbox 491 1557 557 1605; x_wconf 87'>20</span>
|
||||
<span class='ocrx_word' id='word_1_38' title='bbox 589 1579 611 1587; x_wconf 87'>-</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 396 1328 2166 1410; baseline 0.001 -10; x_size 19.707842; x_descenders 3.7078426; x_ascenders 4.5560417">
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 396 1366 418 1400; x_wconf 96'>0</span>
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 459 1328 480 1410; x_wconf 46'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 738 1386 742 1402; x_wconf 31'>I</span>
|
||||
<span class='ocrx_word' id='word_1_42' title='bbox 1018 1386 1022 1402; x_wconf 18'>T</span>
|
||||
<span class='ocrx_word' id='word_1_43' title='bbox 1298 1386 1304 1402; x_wconf 20'>T</span>
|
||||
<span class='ocrx_word' id='word_1_44' title='bbox 1580 1386 1584 1402; x_wconf 2'>T</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 1848 1382 1876 1402; x_wconf 39'>T</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 2118 1332 2166 1402; x_wconf 50'>©</span>
|
||||
<span class='ocr_line' id='line_1_20' title="bbox 528 1772 2888 1897; baseline 0.008 -29; x_size 41; x_descenders 10; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_39' title='bbox 528 1821 557 1867; x_wconf 94'>0</span>
|
||||
<span class='ocrx_word' id='word_1_40' title='bbox 577 1772 688 1883; x_wconf 11'>e-</span>
|
||||
<span class='ocrx_word' id='word_1_41' title='bbox 984 1848 989 1869; x_wconf 92'>T</span>
|
||||
<span class='ocrx_word' id='word_1_42' title='bbox 1357 1848 1363 1869; x_wconf 91'>T</span>
|
||||
<span class='ocrx_word' id='word_1_43' title='bbox 1731 1848 1739 1869; x_wconf 63'>T</span>
|
||||
<span class='ocrx_word' id='word_1_44' title='bbox 2107 1848 2112 1869; x_wconf 33'>I</span>
|
||||
<span class='ocrx_word' id='word_1_45' title='bbox 2463 1839 2493 1897; x_wconf 44'>Tv</span>
|
||||
<span class='ocrx_word' id='word_1_46' title='bbox 2821 1776 2888 1869; x_wconf 47'>®</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_21' title="bbox 422 1418 2156 1484; baseline 0 -16; x_size 57.015999; x_descenders 11.016; x_ascenders 12">
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 422 1422 474 1468; x_wconf 21'>3)</span>
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 689 1418 754 1484; x_wconf 61'>©)</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 980 1422 1034 1468; x_wconf 23'>Ay</span>
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 1260 1422 1316 1468; x_wconf 48'>Ay</span>
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 1540 1422 1596 1468; x_wconf 51'>Ay</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 1824 1422 1876 1468; x_wconf 26'>9</span>
|
||||
<span class='ocrx_word' id='word_1_53' title='bbox 2106 1422 2156 1468; x_wconf 36'>o>)</span>
|
||||
<span class='ocr_line' id='line_1_21' title="bbox 563 1881 2875 1975; baseline 0.008 -28; x_size 86.055397; x_descenders 18.055399; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_47' title='bbox 563 1896 622 1957; x_wconf 47'>3)</span>
|
||||
<span class='ocrx_word' id='word_1_48' title='bbox 927 1881 990 1975; x_wconf 7'>SG)</span>
|
||||
<span class='ocrx_word' id='word_1_49' title='bbox 1307 1896 1379 1957; x_wconf 67'>AY</span>
|
||||
<span class='ocrx_word' id='word_1_50' title='bbox 1680 1896 1755 1957; x_wconf 56'>AY</span>
|
||||
<span class='ocrx_word' id='word_1_51' title='bbox 2053 1896 2128 1957; x_wconf 38'>Ay</span>
|
||||
<span class='ocrx_word' id='word_1_52' title='bbox 2432 1896 2491 1957; x_wconf 78'>9)</span>
|
||||
<span class='ocrx_word' id='word_1_53' title='bbox 2808 1896 2875 1957; x_wconf 73'>2)</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 380 1452 2116 1520; baseline 0.001 -1.979; x_size 64; x_descenders 14; x_ascenders 18">
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 380 1452 425 1518; x_wconf 33'>ee</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 653 1470 692 1520; x_wconf 36'>ow</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 933 1470 972 1520; x_wconf 31'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 1202 1488 1230 1520; x_wconf 50'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 1484 1452 1555 1520; x_wconf 21'>Cs</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 1764 1452 1836 1520; x_wconf 17'>Cs</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 2070 1448 2094 1539; x_wconf 10'>eS</span>
|
||||
<span class='ocr_line' id='line_1_22' title="bbox 508 1936 2821 2027; baseline 0.001 -2.968; x_size 86; x_descenders 19; x_ascenders 24">
|
||||
<span class='ocrx_word' id='word_1_54' title='bbox 508 1936 566 2024; x_wconf 35'>ee</span>
|
||||
<span class='ocrx_word' id='word_1_55' title='bbox 861 1936 951 2027; x_wconf 46'>oP</span>
|
||||
<span class='ocrx_word' id='word_1_56' title='bbox 1229 1936 1328 2027; x_wconf 22'>ce</span>
|
||||
<span class='ocrx_word' id='word_1_57' title='bbox 1618 1960 1669 2027; x_wconf 44'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_58' title='bbox 1984 1936 2074 2027; x_wconf 43'>oP</span>
|
||||
<span class='ocrx_word' id='word_1_59' title='bbox 2357 1936 2448 2027; x_wconf 35'>oP</span>
|
||||
<span class='ocrx_word' id='word_1_60' title='bbox 2725 1936 2821 2027; x_wconf 0'>”</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 346 1498 2062 1553; baseline 0 -13; x_size 46.806126; x_descenders 8.8061256; x_ascenders 10.820599">
|
||||
<span class='ocrx_word' id='word_1_61' title='bbox 346 1498 375 1553; x_wconf 63'>RQ</span>
|
||||
<span class='ocrx_word' id='word_1_62' title='bbox 626 1504 660 1540; x_wconf 84'>Q</span>
|
||||
<span class='ocrx_word' id='word_1_63' title='bbox 906 1502 940 1540; x_wconf 78'>R</span>
|
||||
<span class='ocrx_word' id='word_1_64' title='bbox 1188 1502 1220 1540; x_wconf 44'>R</span>
|
||||
<span class='ocrx_word' id='word_1_65' title='bbox 1464 1498 1492 1553; x_wconf 21'>XR</span>
|
||||
<span class='ocrx_word' id='word_1_66' title='bbox 1748 1502 1782 1540; x_wconf 77'>Q</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 2028 1502 2062 1540; x_wconf 74'>R</span>
|
||||
<span class='ocr_line' id='line_1_23' title="bbox 457 1999 2749 2070; baseline 0 -17; x_size 62.36174; x_descenders 12.361742; x_ascenders 14.397873">
|
||||
<span class='ocrx_word' id='word_1_61' title='bbox 457 1999 493 2070; x_wconf 12'>XR</span>
|
||||
<span class='ocrx_word' id='word_1_62' title='bbox 831 1999 867 2070; x_wconf 15'>XR</span>
|
||||
<span class='ocrx_word' id='word_1_63' title='bbox 1208 2003 1253 2053; x_wconf 62'>R</span>
|
||||
<span class='ocrx_word' id='word_1_64' title='bbox 1580 1999 1616 2070; x_wconf 53'>XR</span>
|
||||
<span class='ocrx_word' id='word_1_65' title='bbox 1953 1999 1989 2070; x_wconf 23'>XY</span>
|
||||
<span class='ocrx_word' id='word_1_66' title='bbox 2331 2003 2376 2053; x_wconf 19'>R</span>
|
||||
<span class='ocrx_word' id='word_1_67' title='bbox 2704 2003 2749 2053; x_wconf 39'>XR</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 274 1518 2013 1598; baseline -0.005 -28; x_size 56; x_descenders 16; x_ascenders 10">
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 274 1530 344 1598; x_wconf 44'>&</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 578 1554 599 1598; x_wconf 49'>es</span>
|
||||
<span class='ocrx_word' id='word_1_70' title='bbox 871 1534 906 1588; x_wconf 0'>o</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 1118 1528 1184 1594; x_wconf 6'>a</span>
|
||||
<span class='ocrx_word' id='word_1_72' title='bbox 1398 1528 1470 1594; x_wconf 46'>al</span>
|
||||
<span class='ocrx_word' id='word_1_73' title='bbox 1698 1524 1748 1582; x_wconf 7'>&</span>
|
||||
<span class='ocrx_word' id='word_1_74' title='bbox 1979 1518 2013 1584; x_wconf 23'>eo</span>
|
||||
<span class='ocr_line' id='line_1_24' title="bbox 402 2021 2689 2125; baseline 0.007 -57.119; x_size 58; x_descenders 15; x_ascenders 17">
|
||||
<span class='ocrx_word' id='word_1_68' title='bbox 402 2021 459 2097; x_wconf 34'>~\</span>
|
||||
<span class='ocrx_word' id='word_1_69' title='bbox 768 2045 837 2109; x_wconf 47'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_70' title='bbox 1141 2045 1208 2109; x_wconf 25'>@</span>
|
||||
<span class='ocrx_word' id='word_1_71' title='bbox 1541 2037 1579 2077; x_wconf 42'>\</span>
|
||||
<span class='ocrx_word' id='word_1_72' title='bbox 1864 2037 1960 2125; x_wconf 55'>wl</span>
|
||||
<span class='ocrx_word' id='word_1_73' title='bbox 2264 2032 2317 2109; x_wconf 27'>ae</span>
|
||||
<span class='ocrx_word' id='word_1_74' title='bbox 2637 2032 2689 2107; x_wconf 71'>eo</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_25' title="bbox 200 1566 1974 1654; baseline -0.001 -45; x_size 28; x_descenders 4; x_ascenders 8">
|
||||
<span class='ocrx_word' id='word_1_75' title='bbox 200 1578 284 1654; x_wconf 74'>3</span>
|
||||
<span class='ocrx_word' id='word_1_76' title='bbox 496 1588 564 1648; x_wconf 14'>e</span>
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 776 1586 809 1650; x_wconf 0'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 1066 1582 1132 1638; x_wconf 43'>we</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 1348 1580 1414 1638; x_wconf 64'>a?</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 1632 1586 1684 1634; x_wconf 1'>i)</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 1868 1566 1974 1654; x_wconf 0'>as?</span>
|
||||
<span class='ocr_line' id='line_1_25' title="bbox 316 2088 2632 2200; baseline 0.007 -23.918; x_size 81; x_descenders 13; x_ascenders 30">
|
||||
<span class='ocrx_word' id='word_1_75' title='bbox 316 2104 365 2176; x_wconf 17'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_76' title='bbox 697 2091 753 2179; x_wconf 25'>ee</span>
|
||||
<span class='ocrx_word' id='word_1_77' title='bbox 1069 2088 1152 2168; x_wconf 0'>~)</span>
|
||||
<span class='ocrx_word' id='word_1_78' title='bbox 1424 2105 1509 2200; x_wconf 40'>se?</span>
|
||||
<span class='ocrx_word' id='word_1_79' title='bbox 1797 2107 1884 2184; x_wconf 56'>a?</span>
|
||||
<span class='ocrx_word' id='word_1_80' title='bbox 2176 2120 2243 2173; x_wconf 57'>N?</span>
|
||||
<span class='ocrx_word' id='word_1_81' title='bbox 2560 2093 2632 2173; x_wconf 25'>&</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 112 1660 1878 1738; baseline -0.013 -23; x_size 64; x_descenders 18; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 112 1670 181 1734; x_wconf 67'>3</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 398 1664 468 1738; x_wconf 63'>4?</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 682 1676 732 1734; x_wconf 64'>3</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 968 1664 1022 1722; x_wconf 62'>&</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 1256 1664 1294 1722; x_wconf 24'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 1534 1660 1588 1718; x_wconf 67'>&</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 1802 1662 1878 1730; x_wconf 30'>&</span>
|
||||
<span class='ocr_line' id='line_1_26' title="bbox 267 2144 2576 2242; baseline 0.01 -37; x_size 65; x_descenders 12; x_ascenders 16">
|
||||
<span class='ocrx_word' id='word_1_82' title='bbox 267 2152 323 2205; x_wconf 62'>&</span>
|
||||
<span class='ocrx_word' id='word_1_83' title='bbox 621 2160 688 2221; x_wconf 52'>cf</span>
|
||||
<span class='ocrx_word' id='word_1_84' title='bbox 1027 2144 1077 2195; x_wconf 59'>O</span>
|
||||
<span class='ocrx_word' id='word_1_85' title='bbox 1379 2184 1416 2221; x_wconf 67'>S</span>
|
||||
<span class='ocrx_word' id='word_1_86' title='bbox 1755 2184 1792 2221; x_wconf 0'>%</span>
|
||||
<span class='ocrx_word' id='word_1_87' title='bbox 2135 2169 2172 2242; x_wconf 22'>ed</span>
|
||||
<span class='ocrx_word' id='word_1_88' title='bbox 2491 2147 2576 2229; x_wconf 33'>ol</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 46 1706 1813 1784; baseline 0.001 -40; x_size 39; x_descenders 8; x_ascenders 13">
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 46 1724 114 1784; x_wconf 64'>oe</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 340 1736 386 1774; x_wconf 46'>ww</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 630 1716 688 1770; x_wconf 21'>6</span>
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 948 1710 980 1740; x_wconf 12'>e</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 1194 1710 1260 1762; x_wconf 87'>Qe</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 1480 1706 1546 1758; x_wconf 64'>Qe</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 1748 1716 1813 1770; x_wconf 78'>Qe</span>
|
||||
<span class='ocr_line' id='line_1_27' title="bbox 205 2195 2504 2290; baseline -0.002 -22; x_size 81; x_descenders 17; x_ascenders 28">
|
||||
<span class='ocrx_word' id='word_1_89' title='bbox 205 2227 243 2264; x_wconf 10'>S</span>
|
||||
<span class='ocrx_word' id='word_1_90' title='bbox 571 2199 627 2288; x_wconf 35'>&-</span>
|
||||
<span class='ocrx_word' id='word_1_91' title='bbox 976 2195 1029 2240; x_wconf 40'>%</span>
|
||||
<span class='ocrx_word' id='word_1_92' title='bbox 1311 2201 1357 2290; x_wconf 22'>os</span>
|
||||
<span class='ocrx_word' id='word_1_93' title='bbox 1692 2201 1736 2290; x_wconf 9'>es</span>
|
||||
<span class='ocrx_word' id='word_1_94' title='bbox 2077 2200 2141 2264; x_wconf 38'>se</span>
|
||||
<span class='ocrx_word' id='word_1_95' title='bbox 2435 2216 2504 2277; x_wconf 49'>ae</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_28' title="bbox 160 2235 2445 2343; baseline 0.007 -30.923; x_size 82; x_descenders 16; x_ascenders 26">
|
||||
<span class='ocrx_word' id='word_1_96' title='bbox 160 2248 219 2312; x_wconf 0'>~</span>
|
||||
<span class='ocrx_word' id='word_1_97' title='bbox 486 2245 561 2343; x_wconf 45'>os</span>
|
||||
<span class='ocrx_word' id='word_1_98' title='bbox 883 2235 960 2325; x_wconf 12'>ss</span>
|
||||
<span class='ocrx_word' id='word_1_99' title='bbox 1282 2250 1305 2340; x_wconf 41'>Ss</span>
|
||||
<span class='ocrx_word' id='word_1_100' title='bbox 1640 2252 1686 2342; x_wconf 39'>eS</span>
|
||||
<span class='ocrx_word' id='word_1_101' title='bbox 2023 2251 2073 2315; x_wconf 29'>eS</span>
|
||||
<span class='ocrx_word' id='word_1_102' title='bbox 2376 2264 2445 2328; x_wconf 64'>Ss</span>
|
||||
</span>
|
||||
<span class='ocr_line' id='line_1_29' title="bbox 61 2288 2371 2383; baseline -0.005 -28; x_size 71; x_descenders 14; x_ascenders 19">
|
||||
<span class='ocrx_word' id='word_1_103' title='bbox 61 2294 139 2383; x_wconf 39'>cx?</span>
|
||||
<span class='ocrx_word' id='word_1_104' title='bbox 453 2315 515 2365; x_wconf 43'>sO</span>
|
||||
<span class='ocrx_word' id='word_1_105' title='bbox 849 2291 889 2370; x_wconf 0'>oS</span>
|
||||
<span class='ocrx_word' id='word_1_106' title='bbox 1592 2296 1632 2349; x_wconf 56'>Q</span>
|
||||
<span class='ocrx_word' id='word_1_107' title='bbox 1973 2288 2013 2344; x_wconf 73'>Q</span>
|
||||
<span class='ocrx_word' id='word_1_108' title='bbox 2331 2304 2371 2360; x_wconf 84'>Q</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
+15
-13
@@ -16,21 +16,23 @@ Replacement of "creationism" with "intelligent design"
|
||||
|
||||
|
||||
120
|
||||
100 4
|
||||
= 80
|
||||
100 -
|
||||
Cc 80
|
||||
—
|
||||
S
|
||||
_ 6047 —@— "Creation" and "creationist"
|
||||
©
|
||||
oO 607 —@— "Creation" and "creationist"
|
||||
5 —@— "Intelligent design"
|
||||
and "design proponent"
|
||||
S «4
|
||||
S 40-
|
||||
20 -
|
||||
0 oe I T T T T ©
|
||||
3) ©) Ay Ay Ay 9 o>)
|
||||
ee ow oe oe Cs Cs eS
|
||||
RQ Q R R XR Q R
|
||||
& es o a al & eo
|
||||
3 e oe we a? i) as?
|
||||
3 4? 3 & oe & &
|
||||
oe ww 6 e Qe Qe Qe
|
||||
0 e- T T T I Tv ®
|
||||
3) SG) AY AY Ay 9) 2)
|
||||
ee oP ce oe oP oP ”
|
||||
XR XR R XR XY R XR
|
||||
~\ oe @ \ wl ae eo
|
||||
oe ee ~) se? a? N? &
|
||||
& cf O S % ed ol
|
||||
S &- % os es se ae
|
||||
~ os ss Ss eS eS Ss
|
||||
cx? sO oS Q Q Q
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user