Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb006ef39f | ||
|
|
890b994403 | ||
|
|
01bbf7d144 | ||
|
|
468de5324a |
@@ -28,11 +28,14 @@ jobs:
|
|||||||
python: "3.10"
|
python: "3.10"
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
python: "3.11"
|
python: "3.11"
|
||||||
#- os: ubuntu-latest
|
|
||||||
# python: "pypy3.9"
|
|
||||||
- os: ubuntu-22.04
|
- os: ubuntu-22.04
|
||||||
python: "3.9"
|
python: "3.9"
|
||||||
tesseract5: true
|
tesseract5: true
|
||||||
|
- os: ubuntu-latest
|
||||||
|
python: "3.12-dev"
|
||||||
|
tesseract5: true
|
||||||
|
#- os: ubuntu-latest
|
||||||
|
# python: "pypy3.9"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
OS: ${{ matrix.os }}
|
OS: ${{ matrix.os }}
|
||||||
@@ -44,9 +47,10 @@ jobs:
|
|||||||
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
name: Install Python
|
name: Setup Python
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
|
cache: "pip"
|
||||||
|
|
||||||
- name: Install Tesseract 5
|
- name: Install Tesseract 5
|
||||||
if: matrix.tesseract5
|
if: matrix.tesseract5
|
||||||
@@ -109,7 +113,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest]
|
os: [macos-latest]
|
||||||
python: ["3.10", "3.11"]
|
python: ["3.10", "3.11", "3.12-dev"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
OS: ${{ matrix.os }}
|
OS: ${{ matrix.os }}
|
||||||
@@ -133,9 +137,10 @@ jobs:
|
|||||||
tesseract
|
tesseract
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
name: Install Python
|
name: Setup Python
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
|
cache: "pip"
|
||||||
|
|
||||||
- name: Install Python packages
|
- name: Install Python packages
|
||||||
run: |
|
run: |
|
||||||
@@ -165,7 +170,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest]
|
os: [windows-latest]
|
||||||
python: ["3.10", "3.11"]
|
python: ["3.10", "3.11", "3.12-dev"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
OS: ${{ matrix.os }}
|
OS: ${{ matrix.os }}
|
||||||
@@ -177,9 +182,10 @@ jobs:
|
|||||||
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
name: Install Python
|
name: Setup Python
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python }}
|
python-version: ${{ matrix.python }}
|
||||||
|
cache: "pip"
|
||||||
|
|
||||||
- name: Install system packages
|
- name: Install system packages
|
||||||
run: |
|
run: |
|
||||||
@@ -210,9 +216,10 @@ jobs:
|
|||||||
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
fetch-depth: "0" # 0=all, needed for setuptools-scm to resolve version tags
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
name: Install Python
|
name: Setup Python
|
||||||
with:
|
with:
|
||||||
python-version: "3.9"
|
python-version: "3.9"
|
||||||
|
cache: "pip"
|
||||||
|
|
||||||
- name: Make wheels and sdist
|
- name: Make wheels and sdist
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+26
-6
@@ -117,14 +117,14 @@ exceed a certain number of megapixels with ``--skip-big``. (A 300 DPI,
|
|||||||
OCR for huge images
|
OCR for huge images
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Separate from these settings, Tesseract has internal limits on the size
|
Tesseract has internal limits on the size
|
||||||
of images it will process. If you issue
|
of images it will process. If you issue
|
||||||
``--tesseract-downsample-large-images``, OCRmyPDF will downsample images
|
``--tesseract-downsample-large-images``, OCRmyPDF will downsample images
|
||||||
to fit Tesseract limits. (The limits are usually entered only for scanned
|
to fit Tesseract limits. (The limits are usually entered only for scanned
|
||||||
images of oversized media, such as large maps or blueprints exceeding
|
images of oversized media, such as large maps or blueprints exceeding
|
||||||
110 cm or 43 inches in either dimension, and at high DPI.)
|
110 cm or 43 inches in either dimension, and at high DPI.)
|
||||||
|
|
||||||
``--tesseract-downsample-above`` adjusts the threshold at which images
|
``--tesseract-downsample-above Npixels`` adjusts the threshold at which images
|
||||||
will be downsampled. By default, only images that exceed any of Tesseract's
|
will be downsampled. By default, only images that exceed any of Tesseract's
|
||||||
internal limits are downsampled.
|
internal limits are downsampled.
|
||||||
|
|
||||||
@@ -195,10 +195,10 @@ In each case OCRmyPDF will search the ``PATH`` environment variable to
|
|||||||
locate the binaries. By modifying the ``PATH`` environment variable, you
|
locate the binaries. By modifying the ``PATH`` environment variable, you
|
||||||
can override the binaries that OCRmyPDF uses.
|
can override the binaries that OCRmyPDF uses.
|
||||||
|
|
||||||
Changing tesseract configuration variables
|
Changing Tesseract configuration variables
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
You can override tesseract's default `control
|
You can override Tesseract's default `control
|
||||||
parameters <https://tesseract-ocr.github.io/tessdoc/tess3/ControlParams.html>`__
|
parameters <https://tesseract-ocr.github.io/tessdoc/tess3/ControlParams.html>`__
|
||||||
with a configuration file.
|
with a configuration file.
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ Unlike ``sandwich`` this renderer is implemented within OCRmyPDF; anyone
|
|||||||
looking to customize how OCR is presented should look here. A major
|
looking to customize how OCR is presented should look here. A major
|
||||||
disadvantage of this renderer is it not capable of correctly handling
|
disadvantage of this renderer is it not capable of correctly handling
|
||||||
text outside the Latin alphabet (specifically, it supports the ISO 8859-1
|
text outside the Latin alphabet (specifically, it supports the ISO 8859-1
|
||||||
character). Pull requests to improve the situation are welcome.
|
character set). Pull requests to improve the situation are welcome.
|
||||||
|
|
||||||
Currently, this renderer has the best compatibility with Mozilla's
|
Currently, this renderer has the best compatibility with Mozilla's
|
||||||
PDF.js viewer.
|
PDF.js viewer.
|
||||||
@@ -286,11 +286,31 @@ Rendering and rasterizing options
|
|||||||
.. versionadded:: 14.3.0
|
.. versionadded:: 14.3.0
|
||||||
|
|
||||||
The ``--continue-on-soft-render-error`` option allows OCRmyPDF to
|
The ``--continue-on-soft-render-error`` option allows OCRmyPDF to
|
||||||
proceed if a page cannot be rasterized rendered. This is useful if you are
|
proceed if a page cannot be rasterized/rendered. This is useful if you are
|
||||||
trying to get the best possible OCR from a PDF that is not well-formed,
|
trying to get the best possible OCR from a PDF that is not well-formed,
|
||||||
and you are willing to accept some pages that may not visually match the
|
and you are willing to accept some pages that may not visually match the
|
||||||
input, and that may not OCR well.
|
input, and that may not OCR well.
|
||||||
|
|
||||||
|
Color conversion strategy
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. versionadded:: 15.0.0
|
||||||
|
|
||||||
|
OCRmyPDF uses Ghostscript to convert PDF to PDF/A. In some cases, this
|
||||||
|
conversion requires color conversion. The default strategy is to convert
|
||||||
|
using the ``LeaveColorUnchanged`` strategy, which preserves the original
|
||||||
|
color space wherever possible (some rare color spaces might still be
|
||||||
|
converted).
|
||||||
|
|
||||||
|
Usually document scanners produce PDFs in the sRGB color space, and do
|
||||||
|
not need to be converted, so the default strategy is appropriate.
|
||||||
|
|
||||||
|
Suppose that you have a document that was prepared for professional
|
||||||
|
printing in a Separation or CMYK color space, and text was converted to
|
||||||
|
curves. In this case, you may want to use a different color conversion
|
||||||
|
strategy. The ``--color-conversion-strategy`` option allows you to select a
|
||||||
|
different strategy, such as ``RGB``.
|
||||||
|
|
||||||
Return code policy
|
Return code policy
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
|||||||
@@ -420,12 +420,12 @@ to change the PATH.
|
|||||||
|
|
||||||
As of early 2021, users have reported problems with the Microsoft Store version of
|
As of early 2021, users have reported problems with the Microsoft Store version of
|
||||||
Python and OCRmyPDF. These issues affect many other third party Python packages.
|
Python and OCRmyPDF. These issues affect many other third party Python packages.
|
||||||
Please download Python from Python.org or Chocolatey instead, and do not use the
|
Please download Python from Python.org or a package manager instead of the
|
||||||
Microsoft Store version.
|
Microsoft Store version.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
32-bit Windows might work, but is not supported.
|
32-bit Windows is not supported.
|
||||||
|
|
||||||
Windows Subsystem for Linux
|
Windows Subsystem for Linux
|
||||||
---------------------------
|
---------------------------
|
||||||
@@ -558,7 +558,7 @@ The following versions are required:
|
|||||||
- unpaper 6.1
|
- unpaper 6.1
|
||||||
|
|
||||||
We recommend 64-bit versions of all software. (32-bit versions are not
|
We recommend 64-bit versions of all software. (32-bit versions are not
|
||||||
supported, although they may still work.)
|
supported, although on Linux, they may still work.)
|
||||||
|
|
||||||
jbig2enc, pngquant, and unpaper are optional. If missing certain
|
jbig2enc, pngquant, and unpaper are optional. If missing certain
|
||||||
features are disabled. OCRmyPDF will discover them as soon as they are
|
features are disabled. OCRmyPDF will discover them as soon as they are
|
||||||
|
|||||||
@@ -59,5 +59,9 @@ To turn on JBIG2 lossy mode, add the argument ``--jbig2-lossy``.
|
|||||||
also required. Also, a JBIG2 encoder must be installed as described in
|
also required. Also, a JBIG2 encoder must be installed as described in
|
||||||
the previous section.
|
the previous section.
|
||||||
|
|
||||||
|
You can adjust the threshold for JBIG2 compression with the
|
||||||
|
``--jbig2-threshold``. The default is 0.85, meaning that if two symbols
|
||||||
|
are 85% similar, they will be compressed together.
|
||||||
|
|
||||||
*Due to an oversight, ocrmypdf v7.0 and v7.1 used lossy mode by
|
*Due to an oversight, ocrmypdf v7.0 and v7.1 used lossy mode by
|
||||||
default.*
|
default.*
|
||||||
|
|||||||
+2
-2
@@ -45,8 +45,8 @@ Optimizations that always occurs
|
|||||||
================================
|
================================
|
||||||
|
|
||||||
OCRmyPDF will automatically replace obsolete or inferior compression schemes
|
OCRmyPDF will automatically replace obsolete or inferior compression schemes
|
||||||
such as RLE or LZW with superior schemes such as Deflate and converting
|
such as RLE or LZW with superior schemes such as Deflate, and convert
|
||||||
monochrome images to CCITT G4. Since this is harmless it always occurs and there
|
monochrome images to CCITT G4. Since this is lossless, it always occurs and there
|
||||||
is no way to disable it. Other non-image compressed objects are compressed as
|
is no way to disable it. Other non-image compressed objects are compressed as
|
||||||
well.
|
well.
|
||||||
|
|
||||||
|
|||||||
+15
-5
@@ -28,6 +28,13 @@ tagged yet.
|
|||||||
|
|
||||||
.. |OCRmyPDF PyPI| image:: https://img.shields.io/pypi/v/ocrmypdf.svg
|
.. |OCRmyPDF PyPI| image:: https://img.shields.io/pypi/v/ocrmypdf.svg
|
||||||
|
|
||||||
|
v15.0.2
|
||||||
|
=======
|
||||||
|
|
||||||
|
- Added Python 3.12 to test matrix.
|
||||||
|
- Updated documentation for notes on Python 3.12, 32-bit support and some new
|
||||||
|
features in v15.
|
||||||
|
|
||||||
v15.0.1
|
v15.0.1
|
||||||
=======
|
=======
|
||||||
|
|
||||||
@@ -42,10 +49,10 @@ v15.0.0
|
|||||||
- Dropped support for Python 3.8.
|
- Dropped support for Python 3.8.
|
||||||
- Dropped support many older dependencies - see ``pyproject.toml`` for details.
|
- Dropped support many older dependencies - see ``pyproject.toml`` for details.
|
||||||
Generally speaking, Ubuntu 22.04 is our baseline system.
|
Generally speaking, Ubuntu 22.04 is our baseline system.
|
||||||
- Dropped support for 32-bit Linux wheels. You must use a 64-bit operating system,
|
- Dropped support for 32-bit Linux wheels. We strongly recommend a 64-bit operating
|
||||||
and 64-bit versions of Python, Tesseract and Ghostscript to use OCRmyPDF. Many of
|
system, and 64-bit versions of Python, Tesseract and Ghostscript to use OCRmyPDF.
|
||||||
our dependencies are dropping 32-bit builds (e.g. Pillow), and we are following
|
Many of our dependencies are dropping 32-bit builds (e.g. Pillow), and we are
|
||||||
suit. (Maintainers may still build 32-bit versions from source.)
|
following suit. (Maintainers may still build 32-bit versions from source.)
|
||||||
- Changed to trusted release for PyPI publishing.
|
- Changed to trusted release for PyPI publishing.
|
||||||
- pikepdf memory mapping is enabled again for improved performance, now an issue
|
- pikepdf memory mapping is enabled again for improved performance, now an issue
|
||||||
with pikepdf has been fixed.
|
with pikepdf has been fixed.
|
||||||
@@ -60,7 +67,10 @@ v15.0.0
|
|||||||
each feature occupies. Typically, small areas of high resolution in PDFs are
|
each feature occupies. Typically, small areas of high resolution in PDFs are
|
||||||
errors or quirks from the repeated use of assets and high resolution is not
|
errors or quirks from the repeated use of assets and high resolution is not
|
||||||
beneficial. :issue:`1010,1104,1004,1079,1010`
|
beneficial. :issue:`1010,1104,1004,1079,1010`
|
||||||
- Ghostscript color conversion strategy is now configurable. :issue:`1143`
|
- Ghostscript color conversion strategy is now configurable using
|
||||||
|
``--color-conversion-strategy``. :issue:`1143`
|
||||||
|
- JBIG2 threshold for optimization is now configurable using
|
||||||
|
``--jbig2-threshold``. :issue:`1133`
|
||||||
|
|
||||||
v14.4.0
|
v14.4.0
|
||||||
=======
|
=======
|
||||||
|
|||||||
Reference in New Issue
Block a user