Merge branch 'master' into feature/jbig2-2018

This commit is contained in:
James R. Barlow 2018-04-05 21:29:39 -07:00
commit 4a341c9034
5 changed files with 546 additions and 360 deletions

View File

@ -19,7 +19,7 @@ If ``--force-ocr`` is issued, then all pages will be rasterized to images, disca
Time and image size limits
""""""""""""""""""""""""""
By default, OCRmyPDF permits tesseract to run for only three minutes (180 seconds) per page. This is usually more than enough time to find all text on a reasonably sized page with modern hardware.
By default, OCRmyPDF permits tesseract to run for three minutes (180 seconds) per page. This is usually more than enough time to find all text on a reasonably sized page with modern hardware.
If a page is skipped, it will be inserted without OCR. If preprocessing was requested, the preprocessed image layer will be inserted.
@ -33,11 +33,17 @@ If you want to adjust the amount of time spent on OCR, change ``--tesseract-time
Overriding default tesseract
""""""""""""""""""""""""""""
OCRmyPDF checks the system ``PATH`` for the ``tesseract`` binary.
OCRmyPDF checks the system ``PATH`` for the ``tesseract`` binary.
Some relevant environment variables that influence Tesseract's behavior include:
.. envvar:: TESSDATA_PREFIX
A Tesseract environment variable that overrides the path to Tesseract's data files.
Overrides the path to Tesseract's data files. This can allow simultaneous installation of the "best" and "fast" training data sets. OCRmyPDF does not manage this environment variable.
.. envvar:: OMP_THREAD_LIMIT
Controls the number of threads Tesseract will use. OCRmyPDF will manage this environment if it is not already set. (Currently, it will set it to 1 because this gives the best results in testing.)
For example, if you are testing tesseract 4.00 and don't wish to use an existing tesseract 3.04 installation, you can launch OCRmyPDF as follows:
@ -106,6 +112,8 @@ The ``sandwich`` renderer
The ``sandwich`` renderer uses Tesseract's new text-only PDF feature, which produces a PDF page that lays out the OCR in invisible text. This page is then "sandwiched" onto the original PDF page, allowing lossless application of OCR even to PDF pages that contain other vector objects.
Currently this is the best renderer for most uses, however it is implemented in Tesseract so OCRmyPDF cannot influence it. Currently some problematic PDF viewers like Mozilla PDF.js and macOS Preview have problems with segmenting its text output, and mightrunseveralwordstogether.
When image preprocessing features like ``--deskew`` are used, the original PDF will be rendered as a full page and the OCR layer will be placed on top.
This renderer requires Tesseract 3.05.01 or newer.
@ -115,6 +123,10 @@ The ``hocr`` renderer
The ``hocr`` renderer works with older versions of Tesseract. The image layer is copied from the original PDF page if possible, avoiding potentially lossy transcoding or loss of other PDF information. If preprocessing is specified, then the image layer is a new PDF.
Unlike ``sandwich`` this renderer is implemented within OCRmyPDF; anyone looking to customize how OCR is presented should look here. A major disadvantage of this renderer is it not capable of correctly handling text outside the Latin alphabet. Pull requests to improve the situation are welcome.
Currently, this renderer has the best compatibility with Mozilla's PDF.js viewer.
This works in all versions of Tesseract.
The ``tesseract`` renderer

View File

@ -386,3 +386,9 @@ If not yet installed, the script will notify you about dependencies that
need to be installed. The script requires specific versions of the
dependencies. Older version than the ones mentioned in the release notes
are likely not to be compatible to OCRmyPDF.
Other Linux packages
--------------------
See the `Repology <https://repology.org/metapackage/ocrmypdf/versions>`_ page.

View File

@ -1,392 +1,553 @@
<?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.38.0 (20140413.2041)
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: Pipeline: Pages: 1 -->
<svg width="1544pt" height="1089pt"
viewBox="0.00 0.00 1544.00 1089.14" 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 1085.14)">
<svg width="1952pt" height="1277pt"
viewBox="0.00 0.00 1952.00 1277.18" 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.1825)">
<title>Pipeline:</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1085.14 1540,-1085.14 1540,4 -4,4"/>
<g id="clust1" class="cluster"><title>clustertasks</title>
<polygon fill="none" stroke="black" points="8,-8 8,-1073.14 1528,-1073.14 1528,-8 8,-8"/>
<text text-anchor="middle" x="768" y="-1045.14" font-family="Times,serif" font-size="30.00" fill="#ff3232">Pipeline:</text>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-1273.1825 1948,-1273.1825 1948,4 -4,4"/>
<g id="clust1" class="cluster">
<title>clustertasks</title>
<polygon fill="none" stroke="#000000" points="8,-8 8,-1261.1825 1936,-1261.1825 1936,-8 8,-8"/>
<text text-anchor="middle" x="972" y="-1233.1825" 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="black" points="750.705,-1027.14 541.295,-1027.14 537.295,-1023.14 537.295,-991.141 746.705,-991.141 750.705,-995.141 750.705,-1027.14"/>
<polyline fill="none" stroke="black" points="746.705,-1023.14 537.295,-1023.14 "/>
<polyline fill="none" stroke="black" points="746.705,-1023.14 746.705,-991.141 "/>
<polyline fill="none" stroke="black" points="746.705,-1023.14 750.705,-1027.14 "/>
<text text-anchor="middle" x="644" y="-1003.14" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.triage</text>
<g id="node1" class="node">
<title>t0</title>
<polygon fill="#efa03b" stroke="#000000" points="876.7053,-1215.1825 667.2947,-1215.1825 663.2947,-1211.1825 663.2947,-1179.1825 872.7053,-1179.1825 876.7053,-1183.1825 876.7053,-1215.1825"/>
<polyline fill="none" stroke="#000000" points="872.7053,-1211.1825 663.2947,-1211.1825 "/>
<polyline fill="none" stroke="#000000" points="872.7053,-1211.1825 872.7053,-1179.1825 "/>
<polyline fill="none" stroke="#000000" points="872.7053,-1211.1825 876.7053,-1215.1825 "/>
<text text-anchor="middle" x="770" y="-1191.1825" 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="black" points="769.969,-969.141 522.031,-969.141 518.031,-965.141 518.031,-933.141 765.969,-933.141 769.969,-937.141 769.969,-969.141"/>
<polyline fill="none" stroke="black" points="765.969,-965.141 518.031,-965.141 "/>
<polyline fill="none" stroke="black" points="765.969,-965.141 765.969,-933.141 "/>
<polyline fill="none" stroke="black" points="765.969,-965.141 769.969,-969.141 "/>
<text text-anchor="middle" x="644" y="-945.141" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.repair_pdf</text>
<g id="node2" class="node">
<title>t1</title>
<polygon fill="#efa03b" stroke="#000000" points="941.0433,-1157.1825 602.9567,-1157.1825 598.9567,-1153.1825 598.9567,-1121.1825 937.0433,-1121.1825 941.0433,-1125.1825 941.0433,-1157.1825"/>
<polyline fill="none" stroke="#000000" points="937.0433,-1153.1825 598.9567,-1153.1825 "/>
<polyline fill="none" stroke="#000000" points="937.0433,-1153.1825 937.0433,-1121.1825 "/>
<polyline fill="none" stroke="#000000" points="937.0433,-1153.1825 941.0433,-1157.1825 "/>
<text text-anchor="middle" x="770" y="-1133.1825" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.repair_and_parse_pdf</text>
</g>
<!-- t0&#45;&gt;t1 -->
<g id="edge1" class="edge"><title>t0&#45;&gt;t1</title>
<path fill="none" stroke="#0044a0" d="M644,-991.035C644,-987.344 644,-983.354 644,-979.384"/>
<polygon fill="#0044a0" stroke="#0044a0" points="647.5,-979.142 644,-969.142 640.5,-979.142 647.5,-979.142"/>
<g id="edge1" class="edge">
<title>t0&#45;&gt;t1</title>
<path fill="none" stroke="#0044a0" d="M770,-1179.1488C770,-1175.4743 770,-1171.5242 770,-1167.5888"/>
<polygon fill="#0044a0" stroke="#0044a0" points="773.5001,-1167.4047 770,-1157.4047 766.5001,-1167.4047 773.5001,-1167.4047"/>
</g>
<!-- t2 -->
<g id="node3" class="node"><title>t2</title>
<polygon fill="#efa03b" stroke="black" points="869.82,-890.215 644,-907.116 418.18,-890.215 418.391,-862.869 869.609,-862.869 869.82,-890.215"/>
<polygon fill="none" stroke="black" points="873.852,-893.922 644,-911.125 414.148,-893.922 414.419,-858.871 873.581,-858.871 873.852,-893.922"/>
<text text-anchor="middle" x="644" y="-876.657" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.split_pages</text>
<g id="node3" class="node">
<title>t2</title>
<polygon fill="#efa03b" stroke="#000000" points="1043.9447,-1078.2585 787,-1095.158 530.0553,-1078.2585 530.2951,-1050.9147 1043.7049,-1050.9147 1043.9447,-1078.2585"/>
<polygon fill="none" stroke="#000000" points="1047.9814,-1081.9991 787,-1099.164 526.0186,-1081.9991 526.3263,-1046.9173 1047.6737,-1046.9173 1047.9814,-1081.9991"/>
<text text-anchor="middle" x="787" y="-1064.7009" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.pre_split_pages</text>
</g>
<!-- t1&#45;&gt;t2 -->
<g id="edge2" class="edge"><title>t1&#45;&gt;t2</title>
<path fill="none" stroke="#0044a0" d="M644,-933.019C644,-929.4 644,-925.445 644,-921.399"/>
<polygon fill="#0044a0" stroke="#0044a0" points="647.5,-921.295 644,-911.295 640.5,-921.295 647.5,-921.295"/>
</g>
<!-- t18 -->
<g id="node20" class="node"><title>t18</title>
<polygon fill="#efa03b" stroke="black" points="383.516,-832.173 20.4844,-832.173 16.4844,-828.173 16.4844,-796.173 379.516,-796.173 383.516,-800.173 383.516,-832.173"/>
<polyline fill="none" stroke="black" points="379.516,-828.173 16.4844,-828.173 "/>
<polyline fill="none" stroke="black" points="379.516,-828.173 379.516,-796.173 "/>
<polyline fill="none" stroke="black" points="379.516,-828.173 383.516,-832.173 "/>
<text text-anchor="middle" x="200" y="-808.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.generate_postscript_stub</text>
</g>
<!-- t1&#45;&gt;t18 -->
<g id="edge29" class="edge"><title>t1&#45;&gt;t18</title>
<path fill="none" stroke="#0044a0" d="M518.14,-936.259C481.198,-930.408 441.05,-922.284 405,-911.141 344.394,-892.407 278.709,-859.14 238.448,-837.118"/>
<polygon fill="#0044a0" stroke="#0044a0" points="239.963,-833.956 229.517,-832.188 236.581,-840.085 239.963,-833.956"/>
</g>
<!-- t21 -->
<g id="node22" class="node"><title>t21</title>
<polygon fill="#efa03b" stroke="black" points="751.49,-156.424 963,-129.109 1174.51,-156.424 1174.31,-200.62 751.688,-200.62 751.49,-156.424"/>
<polygon fill="none" stroke="black" points="747.474,-152.906 963,-125.073 1178.53,-152.906 1178.29,-204.623 747.705,-204.623 747.474,-152.906"/>
<text text-anchor="middle" x="963" y="-162.639" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.merge_pages_qpdf</text>
</g>
<!-- t1&#45;&gt;t21 -->
<g id="edge39" class="edge"><title>t1&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M769.832,-943.539C1011.96,-929.143 1519,-890.056 1519,-815.173 1519,-815.173 1519,-815.173 1519,-309.173 1519,-237.474 1342.87,-202.283 1188.87,-185.216"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1189.08,-181.719 1178.76,-184.118 1188.32,-188.678 1189.08,-181.719"/>
</g>
<!-- t3 -->
<g id="node4" class="node"><title>t3</title>
<polygon fill="#efa03b" stroke="black" points="712.317,-832.173 405.683,-832.173 401.683,-828.173 401.683,-796.173 708.317,-796.173 712.317,-800.173 712.317,-832.173"/>
<polyline fill="none" stroke="black" points="708.317,-828.173 401.683,-828.173 "/>
<polyline fill="none" stroke="black" points="708.317,-828.173 708.317,-796.173 "/>
<polyline fill="none" stroke="black" points="708.317,-828.173 712.317,-832.173 "/>
<text text-anchor="middle" x="557" y="-808.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.rasterize_preview</text>
</g>
<!-- t2&#45;&gt;t3 -->
<g id="edge3" class="edge"><title>t2&#45;&gt;t3</title>
<path fill="none" stroke="#0044a0" d="M614.06,-858.777C605.418,-852.173 595.983,-844.963 587.319,-838.342"/>
<polygon fill="#0044a0" stroke="#0044a0" points="589.37,-835.504 579.299,-832.213 585.119,-841.066 589.37,-835.504"/>
</g>
<!-- t4 -->
<g id="node5" class="node"><title>t4</title>
<polygon fill="#efa03b" stroke="black" points="688.082,-774.173 429.918,-774.173 425.918,-770.173 425.918,-738.173 684.082,-738.173 688.082,-742.173 688.082,-774.173"/>
<polyline fill="none" stroke="black" points="684.082,-770.173 425.918,-770.173 "/>
<polyline fill="none" stroke="black" points="684.082,-770.173 684.082,-738.173 "/>
<polyline fill="none" stroke="black" points="684.082,-770.173 688.082,-774.173 "/>
<text text-anchor="middle" x="557" y="-750.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.orient_page</text>
</g>
<!-- t2&#45;&gt;t4 -->
<g id="edge5" class="edge"><title>t2&#45;&gt;t4</title>
<path fill="none" stroke="#0044a0" d="M695.691,-858.661C705.833,-851.667 715.136,-842.912 721,-832.173 728.668,-818.13 730.919,-808.727 721,-796.173 714.915,-788.471 700.759,-782.127 683.18,-776.959"/>
<polygon fill="#0044a0" stroke="#0044a0" points="683.659,-773.462 673.091,-774.208 681.817,-780.216 683.659,-773.462"/>
</g>
<!-- t3&#45;&gt;t4 -->
<g id="edge4" class="edge"><title>t3&#45;&gt;t4</title>
<path fill="none" stroke="#0044a0" d="M557,-796.066C557,-792.375 557,-788.385 557,-784.415"/>
<polygon fill="#0044a0" stroke="#0044a0" points="560.5,-784.174 557,-774.174 553.5,-784.174 560.5,-784.174"/>
</g>
<!-- t5 -->
<g id="node6" class="node"><title>t5</title>
<polygon fill="#efa03b" stroke="black" points="1064.73,-716.173 689.268,-716.173 685.268,-712.173 685.268,-680.173 1060.73,-680.173 1064.73,-684.173 1064.73,-716.173"/>
<polyline fill="none" stroke="black" points="1060.73,-712.173 685.268,-712.173 "/>
<polyline fill="none" stroke="black" points="1060.73,-712.173 1060.73,-680.173 "/>
<polyline fill="none" stroke="black" points="1060.73,-712.173 1064.73,-716.173 "/>
<text text-anchor="middle" x="875" y="-692.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.rasterize_with_ghostscript</text>
</g>
<!-- t4&#45;&gt;t5 -->
<g id="edge6" class="edge"><title>t4&#45;&gt;t5</title>
<path fill="none" stroke="#0044a0" d="M653.706,-738.143C689.783,-731.789 730.943,-724.541 767.902,-718.033"/>
<polygon fill="#0044a0" stroke="#0044a0" points="768.965,-721.399 778.206,-716.218 767.751,-714.505 768.965,-721.399"/>
</g>
<!-- t15 -->
<g id="node13" class="node"><title>t15</title>
<polygon fill="#ff69b4" stroke="black" points="440.27,-396.173 59.7304,-396.173 55.7304,-392.173 55.7304,-360.173 436.27,-360.173 440.27,-364.173 440.27,-396.173"/>
<polyline fill="none" stroke="black" points="436.27,-392.173 55.7304,-392.173 "/>
<polyline fill="none" stroke="black" points="436.27,-392.173 436.27,-360.173 "/>
<polyline fill="none" stroke="black" points="436.27,-392.173 440.27,-396.173 "/>
<text text-anchor="middle" x="248" y="-372.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.ocr_tesseract_textonly_pdf</text>
</g>
<!-- t4&#45;&gt;t15 -->
<g id="edge14" class="edge"><title>t4&#45;&gt;t15</title>
<path fill="none" stroke="#0044a0" d="M425.857,-745.263C361.241,-732.425 297,-703.891 297,-641.173 297,-641.173 297,-641.173 297,-523.173 297,-480.18 277.182,-433.63 262.754,-405.436"/>
<polygon fill="#0044a0" stroke="#0044a0" points="265.677,-403.477 257.916,-396.265 259.486,-406.743 265.677,-403.477"/>
</g>
<!-- t12 -->
<g id="node15" class="node"><title>t12</title>
<polygon fill="#00cc66" stroke="black" points="781,-406.173 458.414,-378.173 781,-350.173 1103.59,-378.173 781,-406.173"/>
<text text-anchor="middle" x="781" y="-372.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.select_image_layer</text>
</g>
<!-- t4&#45;&gt;t12 -->
<g id="edge20" class="edge"><title>t4&#45;&gt;t12</title>
<path fill="none" stroke="#0044a0" d="M471.449,-738.167C421.018,-722.605 367,-693.681 367,-641.173 367,-641.173 367,-641.173 367,-523.173 367,-480.717 347.218,-458.43 377,-428.173 392.917,-412.001 494.592,-399.721 591.948,-391.499"/>
<polygon fill="#0044a0" stroke="#0044a0" points="592.284,-394.983 601.96,-390.666 591.704,-388.007 592.284,-394.983"/>
</g>
<!-- t19 -->
<g id="node18" class="node"><title>t19</title>
<polygon fill="#efa03b" stroke="black" points="323.772,-270.173 78.2284,-270.173 74.2284,-266.173 74.2284,-234.173 319.772,-234.173 323.772,-238.173 323.772,-270.173"/>
<polyline fill="none" stroke="black" points="319.772,-266.173 74.2284,-266.173 "/>
<polyline fill="none" stroke="black" points="319.772,-266.173 319.772,-234.173 "/>
<polyline fill="none" stroke="black" points="319.772,-266.173 323.772,-270.173 "/>
<text text-anchor="middle" x="199" y="-246.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.skip_page</text>
</g>
<!-- t4&#45;&gt;t19 -->
<g id="edge26" class="edge"><title>t4&#45;&gt;t19</title>
<path fill="none" stroke="#0044a0" d="M425.782,-752.078C271.736,-744.795 37,-720.655 37,-641.173 37,-641.173 37,-641.173 37,-377.173 37,-325.92 88.7624,-292.989 133.769,-274.043"/>
<polygon fill="#0044a0" stroke="#0044a0" points="135.289,-277.203 143.249,-270.211 132.666,-270.713 135.289,-277.203"/>
</g>
<!-- t17 -->
<g id="node19" class="node"><title>t17</title>
<polygon fill="#66ccff" stroke="black" points="1499.67,-328.173 1094.33,-328.173 1090.33,-324.173 1090.33,-292.173 1495.67,-292.173 1499.67,-296.173 1499.67,-328.173"/>
<polyline fill="none" stroke="black" points="1495.67,-324.173 1090.33,-324.173 "/>
<polyline fill="none" stroke="black" points="1495.67,-324.173 1495.67,-292.173 "/>
<polyline fill="none" stroke="black" points="1495.67,-324.173 1499.67,-328.173 "/>
<text text-anchor="middle" x="1295" y="-304.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.ocr_tesseract_and_render_pdf</text>
</g>
<!-- t4&#45;&gt;t17 -->
<g id="edge28" class="edge"><title>t4&#45;&gt;t17</title>
<path fill="none" stroke="#0044a0" d="M688.477,-752.611C947.521,-745.804 1499,-721.841 1499,-641.173 1499,-641.173 1499,-641.173 1499,-455.173 1499,-407.201 1508.25,-383.766 1474,-350.173 1465.98,-342.302 1448.74,-335.804 1427.99,-330.522"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1428.77,-327.11 1418.23,-328.18 1427.14,-333.917 1428.77,-327.11"/>
</g>
<!-- t6 -->
<g id="node7" class="node"><title>t6</title>
<polygon fill="#efa03b" stroke="black" points="1089.08,-658.173 664.92,-658.173 660.92,-654.173 660.92,-622.173 1085.08,-622.173 1089.08,-626.173 1089.08,-658.173"/>
<polyline fill="none" stroke="black" points="1085.08,-654.173 660.92,-654.173 "/>
<polyline fill="none" stroke="black" points="1085.08,-654.173 1085.08,-622.173 "/>
<polyline fill="none" stroke="black" points="1085.08,-654.173 1089.08,-658.173 "/>
<text text-anchor="middle" x="875" y="-634.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.preprocess_remove_background</text>
</g>
<!-- t5&#45;&gt;t6 -->
<g id="edge7" class="edge"><title>t5&#45;&gt;t6</title>
<path fill="none" stroke="#0044a0" d="M875,-680.066C875,-676.375 875,-672.385 875,-668.415"/>
<polygon fill="#0044a0" stroke="#0044a0" points="878.5,-668.174 875,-658.174 871.5,-668.174 878.5,-668.174"/>
</g>
<!-- t11 -->
<g id="node14" class="node"><title>t11</title>
<polygon fill="#efa03b" stroke="black" points="1096,-484.173 712.187,-456.173 1096,-428.173 1479.81,-456.173 1096,-484.173"/>
<text text-anchor="middle" x="1096" y="-450.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.select_visible_page_image</text>
</g>
<!-- t5&#45;&gt;t11 -->
<g id="edge18" class="edge"><title>t5&#45;&gt;t11</title>
<path fill="none" stroke="#0044a0" d="M1051.07,-680.0px8C1072.76,-674.712 1090.1,-667.576 1098,-658.173 1136.53,-612.317 1122.5,-537.602 1109.06,-493.335"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1112.33,-492.043 1105.96,-483.573 1105.65,-494.164 1112.33,-492.043"/>
</g>
<!-- t7 -->
<g id="node8" class="node"><title>t7</title>
<polygon fill="#efa03b" stroke="black" points="1039.68,-600.173 720.324,-600.173 716.324,-596.173 716.324,-564.173 1035.68,-564.173 1039.68,-568.173 1039.68,-600.173"/>
<polyline fill="none" stroke="black" points="1035.68,-596.173 716.324,-596.173 "/>
<polyline fill="none" stroke="black" points="1035.68,-596.173 1035.68,-564.173 "/>
<polyline fill="none" stroke="black" points="1035.68,-596.173 1039.68,-600.173 "/>
<text text-anchor="middle" x="878" y="-576.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.preprocess_deskew</text>
</g>
<!-- t6&#45;&gt;t7 -->
<g id="edge8" class="edge"><title>t6&#45;&gt;t7</title>
<path fill="none" stroke="#0044a0" d="M875.916,-622.066C876.114,-618.375 876.328,-614.385 876.541,-610.415"/>
<polygon fill="#0044a0" stroke="#0044a0" points="880.049,-610.347 877.089,-600.174 873.059,-609.972 880.049,-610.347"/>
</g>
<!-- t6&#45;&gt;t11 -->
<g id="edge17" class="edge"><title>t6&#45;&gt;t11</title>
<path fill="none" stroke="#0044a0" d="M990.695,-622.152C1016.54,-616.369 1039.2,-609.066 1049,-600.173 1078.78,-573.156 1089.74,-526.964 1093.74,-494.403"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1097.24,-494.666 1094.82,-484.351 1090.28,-493.924 1097.24,-494.666"/>
</g>
<!-- t8 -->
<g id="node9" class="node"><title>t8</title>
<polygon fill="#efa03b" stroke="black" points="1030.88,-542.173 729.117,-542.173 725.117,-538.173 725.117,-506.173 1026.88,-506.173 1030.88,-510.173 1030.88,-542.173"/>
<polyline fill="none" stroke="black" points="1026.88,-538.173 725.117,-538.173 "/>
<polyline fill="none" stroke="black" points="1026.88,-538.173 1026.88,-506.173 "/>
<polyline fill="none" stroke="black" points="1026.88,-538.173 1030.88,-542.173 "/>
<text text-anchor="middle" x="878" y="-518.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.preprocess_clean</text>
</g>
<!-- t7&#45;&gt;t8 -->
<g id="edge9" class="edge"><title>t7&#45;&gt;t8</title>
<path fill="none" stroke="#0044a0" d="M878,-564.066C878,-560.375 878,-556.385 878,-552.415"/>
<polygon fill="#0044a0" stroke="#0044a0" points="881.5,-552.174 878,-542.174 874.5,-552.174 881.5,-552.174"/>
</g>
<!-- t7&#45;&gt;t11 -->
<g id="edge16" class="edge"><title>t7&#45;&gt;t11</title>
<path fill="none" stroke="#0044a0" d="M995.441,-564.147C1011.26,-558.713 1026.62,-551.566 1040,-542.173 1057.45,-529.919 1070.89,-510.334 1080.22,-493.051"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1083.55,-494.243 1084.99,-483.747 1077.31,-491.053 1083.55,-494.243"/>
</g>
<!-- t9 -->
<g id="node10" class="node"><title>t9</title>
<polygon fill="#efa03b" stroke="black" points="694.109,-474.173 389.891,-474.173 385.891,-470.173 385.891,-438.173 690.109,-438.173 694.109,-442.173 694.109,-474.173"/>
<polyline fill="none" stroke="black" points="690.109,-470.173 385.891,-470.173 "/>
<polyline fill="none" stroke="black" points="690.109,-470.173 690.109,-438.173 "/>
<polyline fill="none" stroke="black" points="690.109,-470.173 694.109,-474.173 "/>
<text text-anchor="middle" x="540" y="-450.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.select_ocr_image</text>
</g>
<!-- t8&#45;&gt;t9 -->
<g id="edge10" class="edge"><title>t8&#45;&gt;t9</title>
<path fill="none" stroke="#0044a0" d="M790.517,-506.09C743.487,-496.907 685.383,-485.561 636.976,-476.109"/>
<polygon fill="#0044a0" stroke="#0044a0" points="637.602,-472.665 627.116,-474.183 636.26,-479.535 637.602,-472.665"/>
</g>
<!-- t8&#45;&gt;t11 -->
<g id="edge15" class="edge"><title>t8&#45;&gt;t11</title>
<path fill="none" stroke="#0044a0" d="M934.424,-506.09C958.693,-498.742 987.536,-490.01 1014.09,-481.971"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1015.2,-485.293 1023.75,-479.045 1013.17,-478.593 1015.2,-485.293"/>
</g>
<!-- t10 -->
<g id="node11" class="node"><title>t10</title>
<polygon fill="#00cc66" stroke="black" points="1440.1,-396.173 1125.9,-396.173 1121.9,-392.173 1121.9,-360.173 1436.1,-360.173 1440.1,-364.173 1440.1,-396.173"/>
<polyline fill="none" stroke="black" points="1436.1,-392.173 1121.9,-392.173 "/>
<polyline fill="none" stroke="black" points="1436.1,-392.173 1436.1,-360.173 "/>
<polyline fill="none" stroke="black" points="1436.1,-392.173 1440.1,-396.173 "/>
<text text-anchor="middle" x="1281" y="-372.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.ocr_tesseract_hocr</text>
</g>
<!-- t9&#45;&gt;t10 -->
<g id="edge11" class="edge"><title>t9&#45;&gt;t10</title>
<path fill="none" stroke="#0044a0" d="M631.992,-438.111C655.104,-434.327 679.903,-430.697 703,-428.173 884.404,-408.343 931.549,-425.567 1113,-406.173 1133.45,-403.987 1155.2,-400.994 1176.03,-397.794"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1176.83,-401.211 1186.17,-396.209 1175.75,-394.295 1176.83,-401.211"/>
</g>
<!-- t9&#45;&gt;t15 -->
<g id="edge13" class="edge"><title>t9&#45;&gt;t15</title>
<path fill="none" stroke="#0044a0" d="M474.47,-438.117C429.651,-426.452 370.0px1,-410.957 323.342,-398.782"/>
<polygon fill="#0044a0" stroke="#0044a0" points="324.123,-395.369 313.564,-396.237 322.36,-402.143 324.123,-395.369"/>
</g>
<!-- t13 -->
<g id="node12" class="node"><title>t13</title>
<polygon fill="#00cc66" stroke="black" points="683.043,-328.173 374.957,-328.173 370.957,-324.173 370.957,-292.173 679.043,-292.173 683.043,-296.173 683.043,-328.173"/>
<polyline fill="none" stroke="black" points="679.043,-324.173 370.957,-324.173 "/>
<polyline fill="none" stroke="black" points="679.043,-324.173 679.043,-292.173 "/>
<polyline fill="none" stroke="black" points="679.043,-324.173 683.043,-328.173 "/>
<text text-anchor="middle" x="527" y="-304.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.render_hocr_page</text>
</g>
<!-- t10&#45;&gt;t13 -->
<g id="edge12" class="edge"><title>t10&#45;&gt;t13</title>
<path fill="none" stroke="#0044a0" d="M1186.17,-360.113C1162.35,-356.33 1136.79,-352.699 1113,-350.173 929.956,-330.738 880.531,-342.246 693.485,-328.255"/>
<polygon fill="#0044a0" stroke="#0044a0" points="693.548,-324.75 683.311,-327.48 693.016,-331.73 693.548,-324.75"/>
</g>
<!-- t14 -->
<g id="node17" class="node"><title>t14</title>
<polygon fill="#00cc66" stroke="black" points="1072.92,-328.173 705.08,-328.173 701.08,-324.173 701.08,-292.173 1068.92,-292.173 1072.92,-296.173 1072.92,-328.173"/>
<polyline fill="none" stroke="black" points="1068.92,-324.173 701.08,-324.173 "/>
<polyline fill="none" stroke="black" points="1068.92,-324.173 1068.92,-292.173 "/>
<polyline fill="none" stroke="black" points="1068.92,-324.173 1072.92,-328.173 "/>
<text text-anchor="middle" x="887" y="-304.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.render_hocr_debug_page</text>
</g>
<!-- t10&#45;&gt;t14 -->
<g id="edge25" class="edge"><title>t10&#45;&gt;t14</title>
<path fill="none" stroke="#0044a0" d="M1179.28,-360.133C1124,-350.873 1055.54,-339.405 998.77,-329.896"/>
<polygon fill="#0044a0" stroke="#0044a0" points="999.118,-326.405 988.677,-328.205 997.962,-333.309 999.118,-326.405"/>
</g>
<!-- t16 -->
<g id="node16" class="node"><title>t16</title>
<polygon fill="#00cc66" stroke="black" points="636.299,-270.173 345.701,-270.173 341.701,-266.173 341.701,-234.173 632.299,-234.173 636.299,-238.173 636.299,-270.173"/>
<polyline fill="none" stroke="black" points="632.299,-266.173 341.701,-266.173 "/>
<polyline fill="none" stroke="black" points="632.299,-266.173 632.299,-234.173 "/>
<polyline fill="none" stroke="black" points="632.299,-266.173 636.299,-270.173 "/>
<text text-anchor="middle" x="489" y="-246.173" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.combine_layers</text>
</g>
<!-- t13&#45;&gt;t16 -->
<g id="edge22" class="edge"><title>t13&#45;&gt;t16</title>
<path fill="none" stroke="#0044a0" d="M515.392,-292.066C512.519,-287.833 509.379,-283.205 506.299,-278.666"/>
<polygon fill="#0044a0" stroke="#0044a0" points="509.048,-276.483 500.537,-270.174 503.256,-280.414 509.048,-276.483"/>
</g>
<!-- t15&#45;&gt;t16 -->
<g id="edge21" class="edge"><title>t15&#45;&gt;t16</title>
<path fill="none" stroke="#0044a0" d="M263.466,-359.936C281.645,-340.695 313.598,-309.935 347,-292.173 361.3,-284.568 377.219,-278.339 393.079,-273.27"/>
<polygon fill="#0044a0" stroke="#0044a0" points="394.389,-276.53 402.932,-270.262 392.345,-269.835 394.389,-276.53"/>
</g>
<!-- t11&#45;&gt;t12 -->
<g id="edge19" class="edge"><title>t11&#45;&gt;t12</title>
<path fill="none" stroke="#0044a0" d="M1009.92,-434.405C967.591,-424.191 916.524,-411.87 873.373,-401.459"/>
<polygon fill="#0044a0" stroke="#0044a0" points="873.983,-398.006 863.441,-399.063 872.341,-404.811 873.983,-398.006"/>
</g>
<!-- t11&#45;&gt;t14 -->
<g id="edge24" class="edge"><title>t11&#45;&gt;t14</title>
<path fill="none" stroke="#0044a0" d="M1334.06,-445.464C1386.49,-438.209 1431.63,-426.12 1449,-406.173 1465.34,-387.403 1466.07,-368.289 1449,-350.173 1422.45,-321.987 1153.75,-330.0px 1083.05,-328.037"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1083,-324.531 1072.85,-327.564 1082.68,-331.524 1083,-324.531"/>
</g>
<!-- t11&#45;&gt;t17 -->
<g id="edge27" class="edge"><title>t11&#45;&gt;t17</title>
<path fill="none" stroke="#0044a0" d="M1278.64,-441.463C1364.44,-433.122 1450.86,-421.174 1464,-406.173 1480.4,-387.448 1479.49,-369.65 1464,-350.173 1457.83,-342.418 1443.67,-336.074 1426.02,-330.926"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1426.46,-327.418 1415.89,-328.188 1424.63,-334.176 1426.46,-327.418"/>
</g>
<!-- t12&#45;&gt;t16 -->
<g id="edge23" class="edge"><title>t12&#45;&gt;t16</title>
<path fill="none" stroke="#0044a0" d="M624.426,-363.718C509.174,-353.04 370.992,-338.277 362,-328.173 351.364,-316.22 352.491,-305.04 362,-292.173 366.819,-285.651 372.71,-280.186 379.287,-275.609"/>
<polygon fill="#0044a0" stroke="#0044a0" points="381.274,-278.496 387.956,-270.274 377.605,-272.534 381.274,-278.496"/>
<g id="edge2" class="edge">
<title>t1&#45;&gt;t2</title>
<path fill="none" stroke="#0044a0" d="M774.5557,-1120.8306C775.4962,-1117.0421 776.5194,-1112.92 777.5618,-1108.7212"/>
<polygon fill="#0044a0" stroke="#0044a0" points="780.986,-1109.4542 779.9984,-1098.9055 774.1922,-1107.7677 780.986,-1109.4542"/>
</g>
<!-- t20 -->
<g id="node21" class="node"><title>t20</title>
<polygon fill="#efa03b" stroke="black" points="234.918,-156.426 480,-129.117 725.082,-156.426 724.853,-200.614 235.147,-200.614 234.918,-156.426"/>
<polygon fill="none" stroke="black" points="230.903,-152.847 480,-125.09 729.097,-152.847 728.829,-204.616 231.171,-204.616 230.903,-152.847"/>
<text text-anchor="middle" x="480" y="-162.639" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.merge_pages_ghostscript</text>
<g id="node22" class="node">
<title>t20</title>
<polygon fill="#efa03b" stroke="#000000" points="649.5156,-1020.2193 286.4844,-1020.2193 282.4844,-1016.2193 282.4844,-984.2193 645.5156,-984.2193 649.5156,-988.2193 649.5156,-1020.2193"/>
<polyline fill="none" stroke="#000000" points="645.5156,-1016.2193 282.4844,-1016.2193 "/>
<polyline fill="none" stroke="#000000" points="645.5156,-1016.2193 645.5156,-984.2193 "/>
<polyline fill="none" stroke="#000000" points="645.5156,-1016.2193 649.5156,-1020.2193 "/>
<text text-anchor="middle" x="466" y="-996.2193" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.generate_postscript_stub</text>
</g>
<!-- t16&#45;&gt;t20 -->
<g id="edge33" class="edge"><title>t16&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M487.091,-233.881C486.46,-228.165 485.726,-221.515 484.974,-214.703"/>
<polygon fill="#0044a0" stroke="#0044a0" points="488.446,-214.253 483.87,-204.697 481.488,-215.021 488.446,-214.253"/>
<!-- t1&#45;&gt;t20 -->
<g id="edge31" class="edge">
<title>t1&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M598.785,-1123.5822C563.105,-1117.7214 531.8209,-1109.8012 517,-1099.1825 493.9382,-1082.6593 480.4369,-1052.4741 473.1842,-1030.1561"/>
<polygon fill="#0044a0" stroke="#0044a0" points="476.5199,-1029.095 470.2797,-1020.5329 469.8185,-1031.1177 476.5199,-1029.095"/>
</g>
<!-- t16&#45;&gt;t21 -->
<g id="edge37" class="edge"><title>t16&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M602.543,-234.159C645.082,-227.582 693.805,-219.809 738,-212.173 748.572,-210.346 759.416,-208.431 770.357,-206.468"/>
<polygon fill="#0044a0" stroke="#0044a0" points="771.206,-209.872 780.427,-204.653 769.964,-202.983 771.206,-209.872"/>
<!-- t24 -->
<g id="node24" class="node">
<title>t24</title>
<polygon fill="#efa03b" stroke="#000000" points="20.4213,-156.4247 242,-129.112 463.5787,-156.4247 463.3719,-200.6177 20.6281,-200.6177 20.4213,-156.4247"/>
<polygon fill="none" stroke="#000000" points="16.4083,-152.8864 242,-125.079 467.5917,-152.8864 467.3496,-204.6205 16.6504,-204.6205 16.4083,-152.8864"/>
<text text-anchor="middle" x="242" y="-162.6394" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.merge_pages_mupdf</text>
</g>
<!-- t14&#45;&gt;t20 -->
<g id="edge34" class="edge"><title>t14&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M837.094,-292.063C776.411,-271.259 672.165,-235.52 591.922,-208.01"/>
<polygon fill="#0044a0" stroke="#0044a0" points="592.855,-204.63 582.26,-204.697 590.584,-211.251 592.855,-204.63"/>
<!-- t1&#45;&gt;t24 -->
<g id="edge41" class="edge">
<title>t1&#45;&gt;t24</title>
<path fill="none" stroke="#0044a0" d="M598.6617,-1124.8567C376.4578,-1103.9215 17,-1060.9746 17,-1002.2193 17,-1002.2193 17,-1002.2193 17,-335.7123 17,-276.266 68.2524,-235.5065 121.8346,-209.1377"/>
<polygon fill="#0044a0" stroke="#0044a0" points="123.6227,-212.1629 131.1479,-204.7049 120.6143,-205.8423 123.6227,-212.1629"/>
</g>
<!-- t14&#45;&gt;t21 -->
<g id="edge38" class="edge"><title>t14&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M896.319,-292.063C906.85,-272.729 924.406,-240.497 938.861,-213.958"/>
<polygon fill="#0044a0" stroke="#0044a0" points="942.118,-215.294 943.828,-204.838 935.971,-211.946 942.118,-215.294"/>
<!-- t23 -->
<g id="node25" class="node">
<title>t23</title>
<polygon fill="#efa03b" stroke="#000000" points="1006.4902,-156.4239 1218,-129.1092 1429.5098,-156.4239 1429.3124,-200.6199 1006.6876,-200.6199 1006.4902,-156.4239"/>
<polygon fill="none" stroke="#000000" points="1002.4742,-152.9063 1218,-125.073 1433.5258,-152.9063 1433.2948,-204.623 1002.7052,-204.623 1002.4742,-152.9063"/>
<text text-anchor="middle" x="1218" y="-162.6394" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.merge_pages_qpdf</text>
</g>
<!-- t19&#45;&gt;t20 -->
<g id="edge30" class="edge"><title>t19&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M257.907,-234.081C284.597,-226.336 317.298,-216.848 349.316,-207.558"/>
<polygon fill="#0044a0" stroke="#0044a0" points="350.595,-210.831 359.224,-204.683 348.645,-204.108 350.595,-210.831"/>
<!-- t1&#45;&gt;t23 -->
<g id="edge46" class="edge">
<title>t1&#45;&gt;t23</title>
<path fill="none" stroke="#0044a0" d="M941.3419,-1136.2202C1263.4143,-1128.3561 1927,-1100.2573 1927,-1002.2193 1927,-1002.2193 1927,-1002.2193 1927,-335.7123 1927,-234.7734 1651.3069,-194.7548 1443.7522,-178.9295"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1443.8443,-175.4267 1433.6111,-178.1712 1443.3223,-182.4072 1443.8443,-175.4267"/>
</g>
<!-- t19&#45;&gt;t21 -->
<g id="edge35" class="edge"><title>t19&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M323.792,-235.042C326.891,-234.738 329.964,-234.447 333,-234.173 512.532,-217.929 559.043,-233.851 738,-212.173 751.869,-210.493 766.169,-208.472 780.522,-206.237"/>
<polygon fill="#0044a0" stroke="#0044a0" points="781.136,-209.683 790.462,-204.657 780.037,-202.77 781.136,-209.683"/>
<!-- t3 -->
<g id="node4" class="node">
<title>t3</title>
<polygon fill="#efa03b" stroke="#000000" points="1055.3851,-1020.2193 808.6149,-1020.2193 804.6149,-1016.2193 804.6149,-984.2193 1051.3851,-984.2193 1055.3851,-988.2193 1055.3851,-1020.2193"/>
<polyline fill="none" stroke="#000000" points="1051.3851,-1016.2193 804.6149,-1016.2193 "/>
<polyline fill="none" stroke="#000000" points="1051.3851,-1016.2193 1051.3851,-984.2193 "/>
<polyline fill="none" stroke="#000000" points="1051.3851,-1016.2193 1055.3851,-1020.2193 "/>
<text text-anchor="middle" x="930" y="-996.2193" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.split_page</text>
</g>
<!-- t17&#45;&gt;t20 -->
<g id="edge32" class="edge"><title>t17&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M1195.47,-292.133C1071.63,-270.93 856.728,-234.138 694.688,-206.395"/>
<polygon fill="#0044a0" stroke="#0044a0" points="695.028,-202.903 684.581,-204.665 693.846,-209.802 695.028,-202.903"/>
<!-- t2&#45;&gt;t3 -->
<g id="edge3" class="edge">
<title>t2&#45;&gt;t3</title>
<path fill="none" stroke="#0044a0" d="M837.0145,-1046.7494C851.946,-1039.5987 868.2558,-1031.7881 882.9879,-1024.733"/>
<polygon fill="#0044a0" stroke="#0044a0" points="884.9035,-1027.6964 892.4109,-1020.2204 881.88,-1021.383 884.9035,-1027.6964"/>
</g>
<!-- t17&#45;&gt;t21 -->
<g id="edge36" class="edge"><title>t17&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M1254.29,-292.063C1205.19,-271.428 1121.13,-236.1 1055.9,-208.683"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1056.99,-205.345 1046.42,-204.697 1054.28,-211.799 1056.99,-205.345"/>
<!-- t4 -->
<g id="node5" class="node">
<title>t4</title>
<polygon fill="#efa03b" stroke="#000000" points="1194.5194,-941.2939 964,-958.1945 733.4806,-941.2939 733.6958,-913.948 1194.3042,-913.948 1194.5194,-941.2939"/>
<polygon fill="none" stroke="#000000" points="1198.5491,-945.0069 964,-962.203 729.4509,-945.0069 729.7267,-909.9503 1198.2733,-909.9503 1198.5491,-945.0069"/>
<text text-anchor="middle" x="964" y="-927.7357" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_or_skip</text>
</g>
<!-- t18&#45;&gt;t20 -->
<g id="edge31" class="edge"><title>t18&#45;&gt;t20</title>
<path fill="none" stroke="#0044a0" d="M120.266,-796.105C70.9512,-780.34 17,-751.202 17,-699.173 17,-699.173 17,-699.173 17,-309.173 17,-269.597 31.8505,-255.79 65,-234.173 92.9782,-215.927 154.085,-202.475 221.024,-192.724"/>
<polygon fill="#0044a0" stroke="#0044a0" points="221.533,-196.187 230.939,-191.311 220.546,-189.256 221.533,-196.187"/>
<!-- t3&#45;&gt;t4 -->
<g id="edge4" class="edge">
<title>t3&#45;&gt;t4</title>
<path fill="none" stroke="#0044a0" d="M939.1114,-983.867C941.197,-979.6659 943.4863,-975.0549 945.8053,-970.3839"/>
<polygon fill="#0044a0" stroke="#0044a0" points="948.9439,-971.9327 950.2559,-961.4194 942.6741,-968.8199 948.9439,-971.9327"/>
</g>
<!-- t5 -->
<g id="node6" class="node">
<title>t5</title>
<polygon fill="#efa03b" stroke="#000000" points="1119.3166,-883.252 812.6834,-883.252 808.6834,-879.252 808.6834,-847.252 1115.3166,-847.252 1119.3166,-851.252 1119.3166,-883.252"/>
<polyline fill="none" stroke="#000000" points="1115.3166,-879.252 808.6834,-879.252 "/>
<polyline fill="none" stroke="#000000" points="1115.3166,-879.252 1115.3166,-847.252 "/>
<polyline fill="none" stroke="#000000" points="1115.3166,-879.252 1119.3166,-883.252 "/>
<text text-anchor="middle" x="964" y="-859.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.rasterize_preview</text>
</g>
<!-- t4&#45;&gt;t5 -->
<g id="edge5" class="edge">
<title>t4&#45;&gt;t5</title>
<path fill="none" stroke="#0044a0" d="M964,-909.7834C964,-904.5184 964,-898.8955 964,-893.4799"/>
<polygon fill="#0044a0" stroke="#0044a0" points="967.5001,-893.4695 964,-883.4695 960.5001,-893.4695 967.5001,-893.4695"/>
</g>
<!-- t6 -->
<g id="node7" class="node">
<title>t6</title>
<polygon fill="#efa03b" stroke="#000000" points="1269.0824,-825.252 1010.9176,-825.252 1006.9176,-821.252 1006.9176,-789.252 1265.0824,-789.252 1269.0824,-793.252 1269.0824,-825.252"/>
<polyline fill="none" stroke="#000000" points="1265.0824,-821.252 1006.9176,-821.252 "/>
<polyline fill="none" stroke="#000000" points="1265.0824,-821.252 1265.0824,-789.252 "/>
<polyline fill="none" stroke="#000000" points="1265.0824,-821.252 1269.0824,-825.252 "/>
<text text-anchor="middle" x="1138" y="-801.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.orient_page</text>
</g>
<!-- t4&#45;&gt;t6 -->
<g id="edge7" class="edge">
<title>t4&#45;&gt;t6</title>
<path fill="none" stroke="#0044a0" d="M1072.6871,-909.8532C1097.768,-902.2558 1119.5887,-893.2079 1128,-883.252 1138.9559,-870.2843 1141.4763,-851.3696 1141.2475,-835.6545"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1144.7291,-835.2052 1140.7199,-825.3983 1137.7384,-835.5649 1144.7291,-835.2052"/>
</g>
<!-- t5&#45;&gt;t6 -->
<g id="edge6" class="edge">
<title>t5&#45;&gt;t6</title>
<path fill="none" stroke="#0044a0" d="M1018.1009,-847.2184C1035.9411,-841.2716 1055.9459,-834.6034 1074.4267,-828.4431"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1075.5526,-831.7572 1083.9326,-825.2745 1073.3389,-825.1165 1075.5526,-831.7572"/>
</g>
<!-- t7 -->
<g id="node8" class="node">
<title>t7</title>
<polygon fill="#efa03b" stroke="#000000" points="917.7325,-767.252 542.2675,-767.252 538.2675,-763.252 538.2675,-731.252 913.7325,-731.252 917.7325,-735.252 917.7325,-767.252"/>
<polyline fill="none" stroke="#000000" points="913.7325,-763.252 538.2675,-763.252 "/>
<polyline fill="none" stroke="#000000" points="913.7325,-763.252 913.7325,-731.252 "/>
<polyline fill="none" stroke="#000000" points="913.7325,-763.252 917.7325,-767.252 "/>
<text text-anchor="middle" x="728" y="-743.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.rasterize_with_ghostscript</text>
</g>
<!-- t6&#45;&gt;t7 -->
<g id="edge8" class="edge">
<title>t6&#45;&gt;t7</title>
<path fill="none" stroke="#0044a0" d="M1010.5209,-789.2184C964.4341,-782.6988 912.2171,-775.312 865.3222,-768.6781"/>
<polygon fill="#0044a0" stroke="#0044a0" points="865.792,-765.2098 855.4003,-767.2745 864.8114,-772.1408 865.792,-765.2098"/>
</g>
<!-- t17 -->
<g id="node15" class="node">
<title>t17</title>
<polygon fill="#ff69b4" stroke="#000000" points="1224.2696,-447.252 843.7304,-447.252 839.7304,-443.252 839.7304,-411.252 1220.2696,-411.252 1224.2696,-415.252 1224.2696,-447.252"/>
<polyline fill="none" stroke="#000000" points="1220.2696,-443.252 839.7304,-443.252 "/>
<polyline fill="none" stroke="#000000" points="1220.2696,-443.252 1220.2696,-411.252 "/>
<polyline fill="none" stroke="#000000" points="1220.2696,-443.252 1224.2696,-447.252 "/>
<text text-anchor="middle" x="1032" y="-423.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_tesseract_textonly_pdf</text>
</g>
<!-- t6&#45;&gt;t17 -->
<g id="edge16" class="edge">
<title>t6&#45;&gt;t17</title>
<path fill="none" stroke="#0044a0" d="M1158.4397,-788.9107C1179.7261,-767.6923 1210,-730.5987 1210,-691.252 1210,-691.252 1210,-691.252 1210,-575.252 1210,-532.3545 1227.3937,-512.2638 1200,-479.252 1190.5284,-467.8379 1163.9108,-457.8666 1134.5783,-449.8944"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1135.1079,-446.4151 1124.5475,-447.2681 1133.3349,-453.1869 1135.1079,-446.4151"/>
</g>
<!-- t14 -->
<g id="node17" class="node">
<title>t14</title>
<polygon fill="#00cc66" stroke="#000000" points="1565,-457.252 1242.4141,-429.252 1565,-401.252 1887.5859,-429.252 1565,-457.252"/>
<text text-anchor="middle" x="1565" y="-423.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_image_layer</text>
</g>
<!-- t6&#45;&gt;t14 -->
<g id="edge22" class="edge">
<title>t6&#45;&gt;t14</title>
<path fill="none" stroke="#0044a0" d="M1211.6459,-789.1984C1287.5889,-768.3738 1395,-731.7602 1395,-691.252 1395,-691.252 1395,-691.252 1395,-575.252 1395,-519.4485 1448.3697,-480.3436 1495.3026,-456.7437"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1497.1229,-459.7505 1504.5857,-452.2301 1494.0619,-453.4552 1497.1229,-459.7505"/>
</g>
<!-- t21 -->
<g id="node20" class="node">
<title>t21</title>
<polygon fill="#efa03b" stroke="#000000" points="1414.7716,-270.1725 1169.2284,-270.1725 1165.2284,-266.1725 1165.2284,-234.1725 1410.7716,-234.1725 1414.7716,-238.1725 1414.7716,-270.1725"/>
<polyline fill="none" stroke="#000000" points="1410.7716,-266.1725 1165.2284,-266.1725 "/>
<polyline fill="none" stroke="#000000" points="1410.7716,-266.1725 1410.7716,-234.1725 "/>
<polyline fill="none" stroke="#000000" points="1410.7716,-266.1725 1414.7716,-270.1725 "/>
<text text-anchor="middle" x="1290" y="-246.1725" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.skip_page</text>
</g>
<!-- t6&#45;&gt;t21 -->
<g id="edge28" class="edge">
<title>t6&#45;&gt;t21</title>
<path fill="none" stroke="#0044a0" d="M1269.322,-800.6326C1488.9576,-787.7851 1907,-754.9633 1907,-691.252 1907,-691.252 1907,-691.252 1907,-429.252 1907,-329.7211 1606.6136,-282.8737 1425.0278,-263.647"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1425.1684,-260.1428 1414.8592,-262.586 1424.4419,-267.105 1425.1684,-260.1428"/>
</g>
<!-- t19 -->
<g id="node21" class="node">
<title>t19</title>
<polygon fill="#66ccff" stroke="#000000" points="465.6739,-447.252 60.3261,-447.252 56.3261,-443.252 56.3261,-411.252 461.6739,-411.252 465.6739,-415.252 465.6739,-447.252"/>
<polyline fill="none" stroke="#000000" points="461.6739,-443.252 56.3261,-443.252 "/>
<polyline fill="none" stroke="#000000" points="461.6739,-443.252 461.6739,-411.252 "/>
<polyline fill="none" stroke="#000000" points="461.6739,-443.252 465.6739,-447.252 "/>
<text text-anchor="middle" x="261" y="-423.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_tesseract_and_render_pdf</text>
</g>
<!-- t6&#45;&gt;t19 -->
<g id="edge30" class="edge">
<title>t6&#45;&gt;t19</title>
<path fill="none" stroke="#0044a0" d="M1006.6775,-802.4744C883.1032,-797.0687 693.0454,-786.4114 529,-767.252 327.1018,-743.6717 78,-894.5226 78,-691.252 78,-691.252 78,-691.252 78,-575.252 78,-532.3545 60.4757,-512.1551 88,-479.252 97.684,-467.6756 124.6714,-457.7191 154.5327,-449.8074"/>
<polygon fill="#0044a0" stroke="#0044a0" points="155.4872,-453.176 164.3106,-447.311 153.7556,-446.3936 155.4872,-453.176"/>
</g>
<!-- t8 -->
<g id="node9" class="node">
<title>t8</title>
<polygon fill="#efa03b" stroke="#000000" points="942.0801,-709.252 517.9199,-709.252 513.9199,-705.252 513.9199,-673.252 938.0801,-673.252 942.0801,-677.252 942.0801,-709.252"/>
<polyline fill="none" stroke="#000000" points="938.0801,-705.252 513.9199,-705.252 "/>
<polyline fill="none" stroke="#000000" points="938.0801,-705.252 938.0801,-673.252 "/>
<polyline fill="none" stroke="#000000" points="938.0801,-705.252 942.0801,-709.252 "/>
<text text-anchor="middle" x="728" y="-685.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_remove_background</text>
</g>
<!-- t7&#45;&gt;t8 -->
<g id="edge9" class="edge">
<title>t7&#45;&gt;t8</title>
<path fill="none" stroke="#0044a0" d="M728,-731.2184C728,-727.5438 728,-723.5938 728,-719.6583"/>
<polygon fill="#0044a0" stroke="#0044a0" points="731.5001,-719.4742 728,-709.4743 724.5001,-719.4743 731.5001,-719.4742"/>
</g>
<!-- t13 -->
<g id="node16" class="node">
<title>t13</title>
<polygon fill="#efa03b" stroke="#000000" points="481,-535.252 97.1874,-507.252 481,-479.252 864.8126,-507.252 481,-535.252"/>
<text text-anchor="middle" x="481" y="-501.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_visible_page_image</text>
</g>
<!-- t7&#45;&gt;t13 -->
<g id="edge20" class="edge">
<title>t7&#45;&gt;t13</title>
<path fill="none" stroke="#0044a0" d="M592.7552,-731.2177C555.8805,-724.9263 521.5464,-717.3855 505,-709.252 470.5499,-692.3178 456.557,-686.3456 441,-651.252 425.2764,-615.7827 441.5685,-572.6191 457.8398,-542.8513"/>
<polygon fill="#0044a0" stroke="#0044a0" points="460.9365,-544.4864 462.8533,-534.0664 454.8568,-541.0167 460.9365,-544.4864"/>
</g>
<!-- t9 -->
<g id="node10" class="node">
<title>t9</title>
<polygon fill="#efa03b" stroke="#000000" points="773.6759,-651.252 454.3241,-651.252 450.3241,-647.252 450.3241,-615.252 769.6759,-615.252 773.6759,-619.252 773.6759,-651.252"/>
<polyline fill="none" stroke="#000000" points="769.6759,-647.252 450.3241,-647.252 "/>
<polyline fill="none" stroke="#000000" points="769.6759,-647.252 769.6759,-615.252 "/>
<polyline fill="none" stroke="#000000" points="769.6759,-647.252 773.6759,-651.252 "/>
<text text-anchor="middle" x="612" y="-627.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_deskew</text>
</g>
<!-- t8&#45;&gt;t9 -->
<g id="edge10" class="edge">
<title>t8&#45;&gt;t9</title>
<path fill="none" stroke="#0044a0" d="M691.9327,-673.2184C680.9122,-667.7081 668.6526,-661.5783 657.1104,-655.8072"/>
<polygon fill="#0044a0" stroke="#0044a0" points="658.5545,-652.6162 648.045,-651.2745 655.424,-658.8772 658.5545,-652.6162"/>
</g>
<!-- t8&#45;&gt;t13 -->
<g id="edge19" class="edge">
<title>t8&#45;&gt;t13</title>
<path fill="none" stroke="#0044a0" d="M763.3121,-673.1037C771.2083,-667.2594 778.5531,-659.9847 783,-651.252 790.2604,-636.9942 792.214,-628.3326 783,-615.252 759.3602,-581.6921 662.7714,-550.9641 585.1057,-530.9385"/>
<polygon fill="#0044a0" stroke="#0044a0" points="585.806,-527.5052 575.2515,-528.4283 584.078,-534.2886 585.806,-527.5052"/>
</g>
<!-- t10 -->
<g id="node11" class="node">
<title>t10</title>
<polygon fill="#efa03b" stroke="#000000" points="1117.8828,-593.252 816.1172,-593.252 812.1172,-589.252 812.1172,-557.252 1113.8828,-557.252 1117.8828,-561.252 1117.8828,-593.252"/>
<polyline fill="none" stroke="#000000" points="1113.8828,-589.252 812.1172,-589.252 "/>
<polyline fill="none" stroke="#000000" points="1113.8828,-589.252 1113.8828,-557.252 "/>
<polyline fill="none" stroke="#000000" points="1113.8828,-589.252 1117.8828,-593.252 "/>
<text text-anchor="middle" x="965" y="-569.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.preprocess_clean</text>
</g>
<!-- t9&#45;&gt;t10 -->
<g id="edge11" class="edge">
<title>t9&#45;&gt;t10</title>
<path fill="none" stroke="#0044a0" d="M721.7564,-615.2184C760.9379,-608.7806 805.2658,-601.4973 845.2464,-594.9283"/>
<polygon fill="#0044a0" stroke="#0044a0" points="846.0113,-598.3496 855.3115,-593.2745 844.8763,-591.4422 846.0113,-598.3496"/>
</g>
<!-- t9&#45;&gt;t13 -->
<g id="edge18" class="edge">
<title>t9&#45;&gt;t13</title>
<path fill="none" stroke="#0044a0" d="M593.2309,-615.1993C573.0988,-595.8356 540.6771,-564.6514 515.8453,-540.7673"/>
<polygon fill="#0044a0" stroke="#0044a0" points="518.0381,-538.0203 508.4046,-533.6106 513.1856,-543.0654 518.0381,-538.0203"/>
</g>
<!-- t11 -->
<g id="node12" class="node">
<title>t11</title>
<polygon fill="#efa03b" stroke="#000000" points="1191.1094,-525.252 886.8906,-525.252 882.8906,-521.252 882.8906,-489.252 1187.1094,-489.252 1191.1094,-493.252 1191.1094,-525.252"/>
<polyline fill="none" stroke="#000000" points="1187.1094,-521.252 882.8906,-521.252 "/>
<polyline fill="none" stroke="#000000" points="1187.1094,-521.252 1187.1094,-489.252 "/>
<polyline fill="none" stroke="#000000" points="1187.1094,-521.252 1191.1094,-525.252 "/>
<text text-anchor="middle" x="1037" y="-501.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.select_ocr_image</text>
</g>
<!-- t10&#45;&gt;t11 -->
<g id="edge12" class="edge">
<title>t10&#45;&gt;t11</title>
<path fill="none" stroke="#0044a0" d="M984.2947,-557.0293C992.2846,-549.4832 1001.6851,-540.6049 1010.318,-532.4517"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1012.7851,-534.9359 1017.6521,-525.5251 1007.9787,-529.8468 1012.7851,-534.9359"/>
</g>
<!-- t10&#45;&gt;t13 -->
<g id="edge17" class="edge">
<title>t10&#45;&gt;t13</title>
<path fill="none" stroke="#0044a0" d="M836.5676,-557.2078C770.772,-547.9638 690.4915,-536.6847 622.8731,-527.1846"/>
<polygon fill="#0044a0" stroke="#0044a0" points="622.9531,-523.6616 612.5634,-525.7361 621.9792,-530.5935 622.9531,-523.6616"/>
</g>
<!-- t12 -->
<g id="node13" class="node">
<title>t12</title>
<polygon fill="#00cc66" stroke="#000000" points="822.0996,-447.252 507.9004,-447.252 503.9004,-443.252 503.9004,-411.252 818.0996,-411.252 822.0996,-415.252 822.0996,-447.252"/>
<polyline fill="none" stroke="#000000" points="818.0996,-443.252 503.9004,-443.252 "/>
<polyline fill="none" stroke="#000000" points="818.0996,-443.252 818.0996,-411.252 "/>
<polyline fill="none" stroke="#000000" points="818.0996,-443.252 822.0996,-447.252 "/>
<text text-anchor="middle" x="663" y="-423.252" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.ocr_tesseract_hocr</text>
</g>
<!-- t11&#45;&gt;t12 -->
<g id="edge13" class="edge">
<title>t11&#45;&gt;t12</title>
<path fill="none" stroke="#0044a0" d="M950.2568,-489.1612C893.2425,-477.2705 818.5749,-461.6981 759.6569,-449.4104"/>
<polygon fill="#0044a0" stroke="#0044a0" points="760.1,-445.9276 749.5961,-447.3122 758.6708,-452.7802 760.1,-445.9276"/>
</g>
<!-- t11&#45;&gt;t17 -->
<g id="edge15" class="edge">
<title>t11&#45;&gt;t17</title>
<path fill="none" stroke="#0044a0" d="M1035.8403,-489.1612C1035.2388,-479.7779 1034.4904,-468.1019 1033.8144,-457.5566"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1037.3033,-457.2705 1033.1707,-447.5149 1030.3177,-457.7184 1037.3033,-457.2705"/>
</g>
<!-- t15 -->
<g id="node14" class="node">
<title>t15</title>
<polygon fill="#00cc66" stroke="#000000" points="1229.0433,-353.7123 920.9567,-353.7123 916.9567,-349.7123 916.9567,-317.7123 1225.0433,-317.7123 1229.0433,-321.7123 1229.0433,-353.7123"/>
<polyline fill="none" stroke="#000000" points="1225.0433,-349.7123 916.9567,-349.7123 "/>
<polyline fill="none" stroke="#000000" points="1225.0433,-349.7123 1225.0433,-317.7123 "/>
<polyline fill="none" stroke="#000000" points="1225.0433,-349.7123 1229.0433,-353.7123 "/>
<text text-anchor="middle" x="1073" y="-329.7123" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.render_hocr_page</text>
</g>
<!-- t12&#45;&gt;t15 -->
<g id="edge14" class="edge">
<title>t12&#45;&gt;t15</title>
<path fill="none" stroke="#0044a0" d="M754.3855,-411.2269C799.2649,-402.117 854.0781,-390.6067 903,-379.252 933.2642,-372.2277 966.3927,-363.8908 995.3012,-356.4015"/>
<polygon fill="#0044a0" stroke="#0044a0" points="996.5416,-359.6955 1005.3389,-353.7914 994.7799,-352.9208 996.5416,-359.6955"/>
</g>
<!-- t16 -->
<g id="node19" class="node">
<title>t16</title>
<polygon fill="#00cc66" stroke="#000000" points="651.9202,-270.1725 284.0798,-270.1725 280.0798,-266.1725 280.0798,-234.1725 647.9202,-234.1725 651.9202,-238.1725 651.9202,-270.1725"/>
<polyline fill="none" stroke="#000000" points="647.9202,-266.1725 280.0798,-266.1725 "/>
<polyline fill="none" stroke="#000000" points="647.9202,-266.1725 647.9202,-234.1725 "/>
<polyline fill="none" stroke="#000000" points="647.9202,-266.1725 651.9202,-270.1725 "/>
<text text-anchor="middle" x="466" y="-246.1725" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.render_hocr_debug_page</text>
</g>
<!-- t12&#45;&gt;t16 -->
<g id="edge27" class="edge">
<title>t12&#45;&gt;t16</title>
<path fill="none" stroke="#0044a0" d="M772.353,-411.2135C825.7002,-401.3017 880.0px85,-389.0648 888,-379.252 912.2169,-349.0628 914.0433,-320.8011 888,-292.1725 871.9898,-274.5731 764.4698,-264.5473 661.9779,-258.9344"/>
<polygon fill="#0044a0" stroke="#0044a0" points="661.9319,-255.4271 651.7593,-258.3883 661.5583,-262.4171 661.9319,-255.4271"/>
</g>
<!-- t25 -->
<g id="node27" class="node">
<title>t25</title>
<polygon fill="#efa03b" stroke="#000000" points="488.7205,-323.495 682,-296.1762 875.2795,-323.495 875.0991,-367.6976 488.9009,-367.6976 488.7205,-323.495"/>
<polygon fill="none" stroke="#000000" points="484.7033,-320.0193 682,-292.1327 879.2967,-320.0193 879.0858,-371.7013 484.9142,-371.7013 484.7033,-320.0193"/>
<text text-anchor="middle" x="682" y="-329.7123" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.merge_sidecars</text>
</g>
<!-- t12&#45;&gt;t25 -->
<g id="edge52" class="edge">
<title>t12&#45;&gt;t25</title>
<path fill="none" stroke="#0044a0" d="M666.6634,-411.2166C668.3795,-402.768 670.5105,-392.2769 672.6326,-381.8293"/>
<polygon fill="#0044a0" stroke="#0044a0" points="676.09,-382.3905 674.6507,-371.8939 669.2301,-380.9971 676.09,-382.3905"/>
</g>
<!-- t18 -->
<g id="node18" class="node">
<title>t18</title>
<polygon fill="#00cc66" stroke="#000000" points="1147.2989,-270.1725 856.7011,-270.1725 852.7011,-266.1725 852.7011,-234.1725 1143.2989,-234.1725 1147.2989,-238.1725 1147.2989,-270.1725"/>
<polyline fill="none" stroke="#000000" points="1143.2989,-266.1725 852.7011,-266.1725 "/>
<polyline fill="none" stroke="#000000" points="1143.2989,-266.1725 1143.2989,-234.1725 "/>
<polyline fill="none" stroke="#000000" points="1143.2989,-266.1725 1147.2989,-270.1725 "/>
<text text-anchor="middle" x="1000" y="-246.1725" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.combine_layers</text>
</g>
<!-- t15&#45;&gt;t18 -->
<g id="edge24" class="edge">
<title>t15&#45;&gt;t18</title>
<path fill="none" stroke="#0044a0" d="M1057.1601,-317.5854C1047.0201,-305.9814 1033.7081,-290.7474 1022.4822,-277.9007"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1025.0247,-275.4911 1015.809,-270.264 1019.7536,-280.0972 1025.0247,-275.4911"/>
</g>
<!-- t17&#45;&gt;t18 -->
<g id="edge23" class="edge">
<title>t17&#45;&gt;t18</title>
<path fill="none" stroke="#0044a0" d="M1160.5767,-411.2248C1195.7121,-403.5317 1227.1378,-393.066 1238,-379.252 1261.9222,-348.8288 1262.9959,-321.72 1238,-292.1725 1231.6408,-284.6553 1197.8632,-277.2656 1157.6598,-270.9231"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1158.0117,-267.4362 1147.596,-269.3761 1156.9481,-274.3549 1158.0117,-267.4362"/>
</g>
<!-- t17&#45;&gt;t25 -->
<g id="edge51" class="edge">
<title>t17&#45;&gt;t25</title>
<path fill="none" stroke="#0044a0" d="M964.5165,-411.2166C925.304,-400.7368 874.3329,-387.1145 826.4989,-374.3305"/>
<polygon fill="#0044a0" stroke="#0044a0" points="827.2267,-370.9023 816.6621,-371.7016 825.4193,-377.6649 827.2267,-370.9023"/>
</g>
<!-- t13&#45;&gt;t14 -->
<g id="edge21" class="edge">
<title>t13&#45;&gt;t14</title>
<path fill="none" stroke="#0044a0" d="M672.8683,-493.1993C736.8314,-488.6166 808.4777,-483.5937 874,-479.252 1033.5051,-468.6828 1073.5671,-468.8587 1233,-457.252 1285.8429,-453.4051 1343.3743,-448.7264 1395.4741,-444.3037"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1395.81,-447.7879 1405.477,-443.4521 1395.2161,-440.8131 1395.81,-447.7879"/>
</g>
<!-- t13&#45;&gt;t16 -->
<g id="edge26" class="edge">
<title>t13&#45;&gt;t16</title>
<path fill="none" stroke="#0044a0" d="M479.4495,-479.3529C478.2545,-457.9761 476.5497,-427.7492 475,-401.252 472.546,-359.2945 469.5914,-310.7019 467.754,-280.6981"/>
<polygon fill="#0044a0" stroke="#0044a0" points="471.2362,-280.2988 467.1306,-270.5318 464.2493,-280.7273 471.2362,-280.2988"/>
</g>
<!-- t13&#45;&gt;t19 -->
<g id="edge29" class="edge">
<title>t13&#45;&gt;t19</title>
<path fill="none" stroke="#0044a0" d="M415.2907,-483.9551C385.6007,-473.4286 350.7427,-461.0699 321.6782,-450.7652"/>
<polygon fill="#0044a0" stroke="#0044a0" points="322.6542,-447.3978 312.0595,-447.3549 320.315,-453.9954 322.6542,-447.3978"/>
</g>
<!-- t14&#45;&gt;t18 -->
<g id="edge25" class="edge">
<title>t14&#45;&gt;t18</title>
<path fill="none" stroke="#0044a0" d="M1519.9776,-405.138C1460.3688,-374.2505 1351.1978,-321.2463 1252,-292.1725 1221.8888,-283.3473 1189.1477,-276.3434 1157.5373,-270.8287"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1157.7641,-267.3171 1147.3187,-269.0901 1156.59,-274.2179 1157.7641,-267.3171"/>
</g>
<!-- t22 -->
<g id="node23" class="node"><title>t22</title>
<polygon fill="#efa03b" stroke="black" points="554.065,-47.332 721,-20.0049 887.935,-47.332 887.779,-91.5483 554.221,-91.5483 554.065,-47.332"/>
<polygon fill="none" stroke="black" points="550.054,-43.9306 721,-15.9468 891.946,-43.9306 891.764,-95.5532 550.236,-95.5532 550.054,-43.9306"/>
<text text-anchor="middle" x="721" y="-53.5531" font-family="Times,serif" font-size="20.00">ocrmypdf.pipeline.copy_final</text>
<g id="node23" class="node">
<title>t22</title>
<polygon fill="#efa03b" stroke="#000000" points="489.918,-156.4263 735,-129.1169 980.082,-156.4263 979.8532,-200.6137 490.1468,-200.6137 489.918,-156.4263"/>
<polygon fill="none" stroke="#000000" points="485.9027,-152.8467 735,-125.09 984.0973,-152.8467 983.8293,-204.6159 486.1707,-204.6159 485.9027,-152.8467"/>
<text text-anchor="middle" x="735" y="-162.6394" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.merge_pages_ghostscript</text>
</g>
<!-- t20&#45;&gt;t22 -->
<g id="edge41" class="edge"><title>t20&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M556.585,-133.609C580.784,-122.857 607.72,-110.888 632.67,-99.8018"/>
<polygon fill="#0044a0" stroke="#0044a0" points="634.408,-102.859 642.125,-95.6004 631.566,-96.4625 634.408,-102.859"/>
<!-- t18&#45;&gt;t22 -->
<g id="edge35" class="edge">
<title>t18&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M942.8252,-234.1499C918.2191,-226.3936 888.4232,-217.0013 859.1708,-207.7804"/>
<polygon fill="#0044a0" stroke="#0044a0" points="859.8692,-204.3309 849.2796,-204.6625 857.7647,-211.007 859.8692,-204.3309"/>
</g>
<!-- t18&#45;&gt;t24 -->
<g id="edge39" class="edge">
<title>t18&#45;&gt;t24</title>
<path fill="none" stroke="#0044a0" d="M852.4716,-245.1051C747.4645,-239.0474 603.1919,-228.6387 477,-212.1725 463.5912,-210.4229 449.788,-208.4132 435.908,-206.238"/>
<polygon fill="#0044a0" stroke="#0044a0" points="436.2183,-202.7434 425.7921,-204.6263 435.1168,-209.6562 436.2183,-202.7434"/>
</g>
<!-- t18&#45;&gt;t23 -->
<g id="edge44" class="edge">
<title>t18&#45;&gt;t23</title>
<path fill="none" stroke="#0044a0" d="M1047.0344,-234.1499C1066.9243,-226.5285 1090.9364,-217.3275 1114.596,-208.2617"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1115.9033,-211.509 1123.9889,-204.6625 1113.3986,-204.9724 1115.9033,-211.509"/>
</g>
<!-- t16&#45;&gt;t22 -->
<g id="edge36" class="edge">
<title>t16&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M524.0378,-234.1499C549.1239,-226.3599 579.5241,-216.9196 609.3422,-207.6602"/>
<polygon fill="#0044a0" stroke="#0044a0" points="610.4833,-210.9707 618.9955,-204.6625 608.4073,-204.2857 610.4833,-210.9707"/>
</g>
<!-- t16&#45;&gt;t24 -->
<g id="edge40" class="edge">
<title>t16&#45;&gt;t24</title>
<path fill="none" stroke="#0044a0" d="M417.6711,-234.1499C397.2337,-226.5285 372.5607,-217.3275 348.2499,-208.2617"/>
<polygon fill="#0044a0" stroke="#0044a0" points="349.1912,-204.8773 338.5986,-204.6625 346.7453,-211.4361 349.1912,-204.8773"/>
</g>
<!-- t16&#45;&gt;t23 -->
<g id="edge45" class="edge">
<title>t16&#45;&gt;t23</title>
<path fill="none" stroke="#0044a0" d="M651.7596,-235.3105C656.5547,-234.9215 661.308,-234.5415 666,-234.1725 811.2137,-222.7545 848.5512,-230.9322 993,-212.1725 1006.176,-210.4614 1019.7432,-208.4558 1033.3753,-206.2619"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1034.0068,-209.7051 1043.3083,-204.6325 1032.8736,-202.7974 1034.0068,-209.7051"/>
</g>
<!-- t21&#45;&gt;t22 -->
<g id="edge40" class="edge"><title>t21&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M888.417,-134.636C863.556,-123.635 835.613,-111.27 809.783,-99.8401"/>
<polygon fill="#0044a0" stroke="#0044a0" points="810.933,-96.5216 800.372,-95.6756 808.1,-102.923 810.933,-96.5216"/>
<g id="edge32" class="edge">
<title>t21&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M1165.0941,-235.3973C1085.9035,-224.7541 997.501,-212.8552 993,-212.1725 980.474,-210.2728 967.615,-208.2703 954.6442,-206.2099"/>
<polygon fill="#0044a0" stroke="#0044a0" points="955.1339,-202.7439 944.7072,-204.6238 954.0305,-209.6564 955.1339,-202.7439"/>
</g>
<!-- t21&#45;&gt;t24 -->
<g id="edge37" class="edge">
<title>t21&#45;&gt;t24</title>
<path fill="none" stroke="#0044a0" d="M1165.2215,-234.9906C1162.1187,-234.699 1159.041,-234.4254 1156,-234.1725 855.1023,-209.1529 777.1841,-244.6523 477,-212.1725 462.026,-210.5524 446.5737,-208.5164 431.0798,-206.2151"/>
<polygon fill="#0044a0" stroke="#0044a0" points="431.3094,-202.7099 420.8968,-204.6663 430.2567,-209.6303 431.3094,-202.7099"/>
</g>
<!-- t21&#45;&gt;t23 -->
<g id="edge42" class="edge">
<title>t21&#45;&gt;t23</title>
<path fill="none" stroke="#0044a0" d="M1274.3771,-234.0471C1268.8557,-227.6412 1262.3807,-220.0px91 1255.8248,-212.5231"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1258.4543,-210.2128 1249.2743,-204.9233 1253.152,-214.783 1258.4543,-210.2128"/>
</g>
<!-- t19&#45;&gt;t22 -->
<g id="edge34" class="edge">
<title>t19&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M260.6159,-410.9505C259.8316,-364.871 259.0249,-246.8273 271,-234.1725 302.6435,-200.7331 431.3919,-218.4498 477,-212.1725 490.4888,-210.316 504.3558,-208.2974 518.3278,-206.1801"/>
<polygon fill="#0044a0" stroke="#0044a0" points="519.1602,-209.5936 528.5161,-204.6219 518.1019,-202.6741 519.1602,-209.5936"/>
</g>
<!-- t19&#45;&gt;t24 -->
<g id="edge38" class="edge">
<title>t19&#45;&gt;t24</title>
<path fill="none" stroke="#0044a0" d="M259.0498,-411.2136C258.0595,-401.7112 256.8826,-389.8585 256,-379.252 251.2976,-322.7418 247.1648,-257.5963 244.6312,-214.9019"/>
<polygon fill="#0044a0" stroke="#0044a0" points="248.1192,-214.5935 244.0377,-204.8165 241.1313,-215.0048 248.1192,-214.5935"/>
</g>
<!-- t19&#45;&gt;t23 -->
<g id="edge43" class="edge">
<title>t19&#45;&gt;t23</title>
<path fill="none" stroke="#0044a0" d="M282.1528,-411.0561C318.8331,-380.6455 397.8323,-320.0855 476,-292.1725 553.979,-264.3269 579.2078,-283.062 661,-270.1725 742.8817,-257.269 762.3086,-248.2304 844,-234.1725 909.9705,-222.82 927.0119,-223.4221 993,-212.1725 1003.5851,-210.368 1014.439,-208.4601 1025.3874,-206.4907"/>
<polygon fill="#0044a0" stroke="#0044a0" points="1026.2474,-209.892 1035.4637,-204.666 1025,-203.004 1026.2474,-209.892"/>
</g>
<!-- t19&#45;&gt;t25 -->
<g id="edge50" class="edge">
<title>t19&#45;&gt;t25</title>
<path fill="none" stroke="#0044a0" d="M342.173,-411.2166C389.8324,-400.6274 451.9326,-386.8297 509.989,-373.9305"/>
<polygon fill="#0044a0" stroke="#0044a0" points="511.0179,-377.2873 520.0207,-371.7016 509.4996,-370.4539 511.0179,-377.2873"/>
</g>
<!-- t20&#45;&gt;t22 -->
<g id="edge33" class="edge">
<title>t20&#45;&gt;t22</title>
<path fill="none" stroke="#0044a0" d="M323.4472,-984.1943C198.6099,-964.2959 37,-926.6746 37,-865.252 37,-865.252 37,-865.252 37,-429.252 37,-211.1917 260.8906,-241.2767 477,-212.1725 490.808,-210.313 505.0108,-208.2741 519.3157,-206.1255"/>
<polygon fill="#0044a0" stroke="#0044a0" points="519.8697,-209.5816 529.2317,-204.6214 518.8199,-202.6608 519.8697,-209.5816"/>
</g>
<!-- t26 -->
<g id="node26" class="node">
<title>t26</title>
<polygon fill="#efa03b" stroke="#000000" points="568.0652,-47.332 735,-20.0049 901.9348,-47.332 901.779,-91.5483 568.221,-91.5483 568.0652,-47.332"/>
<polygon fill="none" stroke="#000000" points="564.0538,-43.9306 735,-15.9468 905.9462,-43.9306 905.7643,-95.5532 564.2357,-95.5532 564.0538,-43.9306"/>
<text text-anchor="middle" x="735" y="-53.5531" font-family="Times,serif" font-size="20.00" fill="#000000">ocrmypdf.pipeline.copy_final</text>
</g>
<!-- t22&#45;&gt;t26 -->
<g id="edge49" class="edge">
<title>t22&#45;&gt;t26</title>
<path fill="none" stroke="#0044a0" d="M735,-124.8984C735,-118.6708 735,-112.2475 735,-105.9711"/>
<polygon fill="#0044a0" stroke="#0044a0" points="738.5001,-105.6074 735,-95.6074 731.5001,-105.6075 738.5001,-105.6074"/>
</g>
<!-- t24&#45;&gt;t26 -->
<g id="edge47" class="edge">
<title>t24&#45;&gt;t26</title>
<path fill="none" stroke="#0044a0" d="M368.6395,-140.6178C427.4047,-127.6148 498.1821,-111.9539 561.7955,-97.8781"/>
<polygon fill="#0044a0" stroke="#0044a0" points="562.9329,-101.2112 571.9406,-95.6333 561.4205,-94.3765 562.9329,-101.2112"/>
</g>
<!-- t23&#45;&gt;t26 -->
<g id="edge48" class="edge">
<title>t23&#45;&gt;t26</title>
<path fill="none" stroke="#0044a0" d="M1095.1818,-140.9007C1037.3475,-127.8387 967.4279,-112.0473 904.6388,-97.8663"/>
<polygon fill="#0044a0" stroke="#0044a0" points="905.1511,-94.3939 894.6256,-95.6048 903.6089,-101.2219 905.1511,-94.3939"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -5,6 +5,12 @@ OCRmyPDF uses `semantic versioning <http://semver.org/>`_ for its command line i
The OCRmyPDF package itself does not contain a public API, although it is fairly stable and breaking changes are usually timed with a major release. A future release will clearly define the stable public API.
v6.1.3
------
- Fix issue #247, ``/CreationDate`` metadata not copied from input to output.
v6.1.2
------

View File

@ -879,6 +879,7 @@ def run_pipeline():
if options.flowchart:
_log.info("Flowchart saved to {}".format(options.flowchart))
return ExitCode.ok
elif options.output_file == '-':
_log.info("Output sent to stdout")
elif os.path.samefile(options.output_file, os.devnull):