diff --git a/ocrmypdf/main.py b/ocrmypdf/main.py
index a193b8e9..cd3c8acb 100755
--- a/ocrmypdf/main.py
+++ b/ocrmypdf/main.py
@@ -5,7 +5,6 @@ from contextlib import suppress
from tempfile import NamedTemporaryFile, mkdtemp
import sys
import os
-import fileinput
import re
import shutil
import warnings
@@ -212,7 +211,7 @@ if not set(options.language).issubset(tesseract.languages()):
"The installed version of tesseract does not have language "
"data for the following requested languages: ")
for lang in (set(options.language) - tesseract.languages()):
- complain(lang, file=sys.stderr)
+ complain(lang)
sys.exit(ExitCode.bad_args)
@@ -545,11 +544,13 @@ def ocr_tesseract_hocr(
pageinfo = get_pageinfo(input_file, pdfinfo, pdfinfo_lock)
+ badxml = os.path.splitext(output_file)[0] + '.badxml'
+
args_tesseract = [
'tesseract',
'-l', '+'.join(options.language),
input_file,
- output_file,
+ badxml,
'hocr'
] + options.tesseract_config
p = Popen(args_tesseract, close_fds=True, stdout=PIPE, stderr=PIPE,
@@ -575,24 +576,26 @@ def ocr_tesseract_hocr(
if p.returncode != 0:
raise CalledProcessError(p.returncode, args_tesseract)
- if os.path.exists(output_file + '.html'):
- # Tesseract 3.02 appends suffix ".html" on its own (.hocr.html)
- shutil.move(output_file + '.html', output_file)
- elif os.path.exists(output_file + '.hocr'):
- # Tesseract 3.03 appends suffix ".hocr" on its own (.hocr.hocr)
- shutil.move(output_file + '.hocr', output_file)
+ if os.path.exists(badxml + '.html'):
+ # Tesseract 3.02 appends suffix ".html" on its own (.badxml.html)
+ shutil.move(badxml + '.html', badxml)
+ elif os.path.exists(badxml + '.hocr'):
+ # Tesseract 3.03 appends suffix ".hocr" on its own (.badxml.hocr)
+ shutil.move(badxml + '.hocr', badxml)
# Tesseract 3.03 inserts source filename into hocr file without
# escaping it, creating invalid XML and breaking the parser.
# As a workaround, rewrite the hocr file, replacing the filename
- # with a space.
+ # with a space. Don't know if Tesseract 3.02 does the same.
+
regex_nested_single_quotes = re.compile(
r"""title='image "([^"]*)";""")
- with fileinput.input(files=(output_file,), inplace=True) as f:
- for line in f:
+ with open(badxml, mode='r', encoding='utf-8') as f_in, \
+ open(output_file, mode='w', encoding='utf-8') as f_out:
+ for line in f_in:
line = regex_nested_single_quotes.sub(
r"""title='image " ";""", line)
- print(line, end='') # fileinput.input redirects stdout
+ f_out.write(line)
@active_if(options.pdf_renderer == 'hocr')
diff --git a/tests/resources/français.pdf b/tests/resources/français.pdf
new file mode 100644
index 00000000..a21d162a
--- /dev/null
+++ b/tests/resources/français.pdf
@@ -0,0 +1,4028 @@
+%PDF-1.3
%
+1 0 obj
<>
endobj
2 0 obj
<>stream
+
+
+
+
+ Adobe Photoshop CC 2015 (Macintosh)
+ 2015-08-18T22:49:26-07:00
+ 2015-08-18T22:50:32-07:00
+ 2015-08-18T22:50:32-07:00
+
+
+
+ JPEG
+ 256
+ 256
+ /9j/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwP
FRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQO
Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEI
AQABAAMBIgACEQEDEQH/3QAEABD/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEF
AQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMi
cYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj
80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcG
BTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kST
VKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/
2gAMAwEAAhEDEQA/APVUkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK
SSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9D1VJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJ
JJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/R9VSSSSUpJJJJSkkk
klKSVPL6lXjXsx/StvtfW60tqbuhjCxjnGXN3e6z21177UfHyKcmirIoeH1XsFlThpuY4BzXQfd9
FySkqSHZfVW+ut7ofc7ZWPF219sf9t1WKcjUTxqUlLpJuUtzYJkQOT4QkpdJJDNsXsp2OO9rn+oB
7BsLG7Hv/Ne/1f0f/F2pKSJJgQRIMjxCdJSkkkG/Lqx7KK7JnJsNVZA0DhXbknf+6308exJSZJC9
YC80ljwAzf6seznbs3/6RMzLqfl2Ygn1Ka67nGPbttdcyva7+tjWJKTJJJpEx38ElLpJIdNvqsLt
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
9CkpD1jq5w8fMbjVutycbGfkOcGgsr9tnoOu3Prc/e+l/wCjo9Sz2f8AFop6vji7Zss9H1Rj/aoH
pesT6fo7t3qfzv6D1PS9D7R+r+r6yhndH+1vyIyH015tH2fJYwNMtAsa2ypz2u9K3bc5j/bZ7E56
SDZt9Z32Q3jK+zQP50P+0fzv856H2r9a9L/T/wCF+y/qySmtkfWSlvTrs2ii10Ydmdi72hotZW1r
3bffvr2+rT/P+jv3/oPVV/KyX1YzLdaHOtprIe31D+ktro2barA39Jv2er6n6H+e/S/zSqv6BjPw
KsB1tnpVYVnTw4bdxrtbVU60+zb6zW4/t9vp/wAhW7cN1+LXTkWlz2WVWusaA2XVWMyW+z37WOdV
s/qJKY9LybcrBqvtj1H7p2iBo5zfPwVtAw8VmJjMx2OLmsmHOidSX/mx+8jpKUkkkkpSSSSSlJJJ
JKf/0PVUkkklKSSSSUpJJJJTm5vUcmvKsxsWr1H0UtveC1zt+82spx6/T/mnWfZ7d19n81+j/RW/
4Kp1Hq+bXR1KuBi30499mK17XS702bmX13/0e7959Nf6Sj/CLVycDEyntfcwl7QWhzXOYS1306nO
qczfU/b76n/o1F/TMGx9r7avU9ZrmPa8uc3bYNtrW1Pc6uv1f8L6bf0iSmGbl5OLi1kNY/KtsZSw
SRWHWO2b3fnbK2e/b/hP5tBxup5LuoHAurZuY+xjrWEwQyvFyGv9Nw9m/wC2bNnqP/4xWTi4VtBw
H/pWMDS5jnufYNd9Npsc517bfUr9Sq/f6vq1+pW/eq2N0rpjjc+t3qj7SbWuY87q7W1sxLmevU/1
nWfoX/aPUs/PfXakpAzrWdc0GjGDnMoZe+oBzi82Ota2ip4DGVO24/8AO3ezfZ/1xD6j1fPZj5rG
bMbKq1orsa8Esbayn12XfzOUyyqyu39X/ofr1Y+T+kWl+yOmj0wygVilorY2surGxp3Mpe2pzG2U
sd9Cqz9Gmd07plxuY9otN4e2xrnudAc6bhU1zz9n3Wta6z0PT/Ssr/PrSU0hnZdefbjBjPtF19dI
sNljqg30bMreMZ52se1lDmenj7PX/nbFNnVOoXH0KqqW3tbkF7nOcWF2PYyna3Y3dsyPU37/APtN
9D0shXH9LwLAQ+qXEsPq7nepurHp12faN3r+q1jtnq+p6inVgYdAb6VTWbGOYD32vd6tu5x+l6tn
6S17v5yz3pKa9nUrH4uDZjsAt6iWNqFh9rN1b8t7rNnuf6dNNnsZ/O2+z1Kv51mc/q2XgYOTc8tt
spty7XVn1HudXS4wylrGvdTW5vt9az9Di2fo/wBOti3p+HbisxH1j0atvpNaS0s2fzTqnsLbKn1/
mPrchv6N0x7djqGlhFjXtkgPbcd+Qy9oO29tz3epb63qb7P0iSmvb1TKrvefTr+zU5dWI4STY71h
TsuboGM9O3JY19X+i/S+t/gUbpWfdlixuS0U5FYa6zGLXNfXv3ex/qe3IZvZZXXmY/6tk+nZ6X0E
Y42C+x9Rax1hezJsZpu3tI9C9zf62N+jf/wKljYWNi7vRaQXQC5znPdtbOyvfa57vSr3P9Or+br3
pKcbG6tkY+HikkXSWes13qPtItvdjte6xoczHYxvvqff/SPTfT+h9P1VpZeXlDNpwcRrBZZVZc6y
2S0NrNdYY1rNu51j7v3/ANElZ0zpNQ9a2tldbA0O3OLa4rf61JsYXek70bv0lL3/AM1/g0TOxMK9
guywGigOPrbzWWtI/SzdW6t3oua39Kzd6f8ApElOd1Dr12HZYWNrvqaLmgN3+19NNmXFmTs+z/So
sqsoZ+lq/nP32KxldUyanOZVRvcKarTtDnlose6q53o1j1Lvs7G+r6df6W76CO/p/Ta3nIsrYIc5
8vPsa6wOrtfXW8+lU6/1X+t6bf03qfpE1fR+n1VmuustBa1m8PfvDKybKa237/WZXU5zvSrZZ+jS
U0/2zl2k/Zam5Ho0stfsa/8ASuebGuppnb9mcz0Hf0n/AA36C30vTstWyqLem9LsLDWxs1tDf0b3
CWybGtv9Nw+0M9Q2Wfp/U/Ser/pLFcssrqrdba4V11gue9xAa1oG5znOd9FrUlMkkkklKSSSSUpJ
JJJSkkkklP8A/9H1VJJJJSkkkklKSSSSU4XX+p2YtjmY9j25NFIvZXLQyyXFoY1np23ZT/0bm3U1
/wA3VZ/OUW2UXKIszrsjHa7Kua3JysuixrQ1oFdLsn7P6cV7q3N9Gv8AS/4X/tv099NImO/gkp5R
2de2mzKOU6vqNmBiWUVhrQb8j9Z21+kWfpvXs/R2Y9X81v8A8D7LlYys7MEsGQ6jcc703gNra19d
rK8W26x1T2ejW1/7lnq/T9LKXRkgcmFXyMDGyLRY/e20N2F9Vj6nFpM7XuofW57d383u/m/f6aSn
Lf1ZwddQzKD7vteI3HADS52Pb9i9W1jWt9+Pb6mX+s/Q/nP0n6L9HHod1t+TXZZdSMgssOZigj1G
Pc5rnsbUKarMdtVvs99lvr/zv6ez9YWu+3Hw6qa2t21lzaKmVgbW/mMbtb9BjNqPubAMiDwfikpx
Bl5juq21Pyq6bG5DW1Yz3gbqNrHOLMf0t9/q/pXtyK7/ANFd+j/wGRjqhk2Z1nRg67Kuf9t6RdkZ
HtYItY3GM1htX6He3IuY+vb/AOCLqpEx3SkRM6Hg/FJTgfb77M81szq2NDqfsRdY2L6nhjrLmsZV
synXWuuxv0V36H0q/wCY3+raOzO6rVhtzabLL8i12dW3HdWHNPojKsww2qprLPUZ9mqq9r/1jf8A
n2el6e87JrbeKC2wuO33Ct5Z7vUibWt9L/AP3+/9H+h3/wA/TvLIHJ/1KSnmm5ldOXfmY2acmgVd
PbZmHY9uw5OW3J3W11tq+hZ+m2/0Vn+grT29VybMyxpyhV083WtryC4UsltWE6ilmU6mxmxz7c27
/h/R/nvR/RLpCQBJ0AS5SU5eZlel0jH+2W735Irqsur2tqcXN3PNtl7XVUY123Zud/pPRp/WLKlV
vuvyPqhnuyP01gpy6iXCd7a3X0V7hsr9X1amN/wTPW/0a22XbrrKtj2+mGneRDXbp/m3fnbNvvU5
A578JKee6ji5rsW3EyWF+DhfpabSd3qnc12DWW7n2O/Z3u9X1/5++nByvVf+sVJzl5Vt/oszHtzr
Mq6h+K0MBrxwbWVZAqsZZs9KhtOazJu9mRa/0v5vIpoXQSJideYSka68cpKcXo+Y19gsuFWHO3C9
BrQwPy6hZZmNqc5u+6qn03sxdrv8HkvVX6zZD3VdUxbch1I/Z7ziY7QP07ntvbdtDmvdkObtrq9C
v+Z3+r/h6Fv00Y9NbWVNAYHOe3Wfc8ussfudLnPe59jlO66ulgfa7a0uawHU+57m1Vt0/ese1qSn
m+p9Zyq3ZVuDdZvqblVuqftcWOppusqe3FZVvrZ69DfQtvt/Wa7f5q6uzH9Ozlvzce3JqZm7ahXj
W78lza2y999d9TcptTvQ9dtVX+Cs9P8AwPp+qtq+30a9+x9mrW7axud7nBm6P3Wbt7/5Cji5VWXU
62qdrbLajuEHdTY/Gs/s+pU7akph02/7RgUXQ8b2D+djeY03OdX+jfu+l6lfss+mrKSSSlJJJJKU
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
2O+23c9r7C9zL/X2+n/gP9JarH7NFvTcnCtFdJzGPZY7Hbtje30d36Td6tjK9vvf/wBto2DluymP
Lq/TdU/Y6CXMd7W2b6bC2v1GbbP3P531Kv8ABqykpyvQ6vlbTfY2r0LXNc1nqVttaAA3IBrtF/0v
+0z3+l/g/wBP+gy1J3Rz+ysPBbY11uAKfTseyWOdS30/0lW76NrN/wDhP0a00klOZV03IqycfJr9
CtzPVbexjHBrm2mk7mu37nXV/Za699n01LN6bk3ZFuRj3+mbGUMcz3NltLr7Ht9epzba/V+0/wCC
/wBF/hK7PTWikkpzm9JcOkX9ON0uvN59XadPXstv+g6x73en623+d96HV0nJ/aNeZfkeoKbLnsB3
EltoLa6tjrPRo+z1u9L9FV+n9P1fz7VqpJKcbqHTc4OvfiltlWVlYuS+vb+kDqrMSu3a8vZX6X2b
E3/6Sv3/AM9vrZUrOjZ7wGMy2Uim7Jvx7W1lzw7IbksZvDn+n+rOzP8Ar/p/4JbKSSnGq6DaMqrK
suAdXY2w1++z6NGVh7fXyLX2O/pnq7v+D2bP8KmHQLhX6HrsNYoxWBzmEn1sN3q0vczftfj2PDfV
p3Ms/wCH9/qVbSSSmlRgD7LfTeyqs5ILbPs7S32lvpe57pdY/wDl/wBhUn9EzcllQysmovx6211F
lR2ufXbj5Vd9tbrPoOfh1+pjV/8AsStpJJTUxMR1VNjXsoZZaZIqYdv0Qxvq7nbr/o/8H7P0ao4/
RsrGLLqbK2WVPJrx4eaW1uYK7Kad73Poa99dd36L9DTs9Kun+ett2UklORT0KyunJrOQC7Lptre4
MgCy6zIyrbWt3n9H6mY706t/0P8ADLTor9KmuqZ9NobPEwNqIkkpSSSSSlJJJJKf/9T1VJJJJSkk
kklKSSSSU1MrpuPlWGxznsc9no3bDAsqku9G3n2+5+x7f01fqW+nZ+lsQx0egY5x/Vu9NpYaBu/m
fSd6lHoe3/Bu/wBN63qM/Q3epT+jV9JJTRd0bBfS6q0OsD7m5D3PcS51gDWn/rdtbPRtob+hfQ+z
H9P0bNiJb03FtZkMcHD7TY217g4giysVNqsrcP5t1f2elytJJKa1WEa312OyLrHV753u0eX7f5yt
jWV+zZ+j2MZsVlJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP/
1fVUkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkkl
KSSSSUpJJJJSkkkklP8A/9b1VJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUp
JJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/Z
+
+
+
+ application/pdf
+
+
+ Adobe Photoshop PDF
+
+
+ uuid:7d2a3fd8-0e08-694b-940d-9a3e6254c345
+ xmp.did:8c404407-2f75-445e-aacb-06f6055fdf76
+ xmp.did:8c404407-2f75-445e-aacb-06f6055fdf76
+ 1
+
+
+
+ created
+ xmp.iid:8c404407-2f75-445e-aacb-06f6055fdf76
+ 2015-08-18T22:49:26-07:00
+ Adobe Photoshop CC 2015 (Macintosh)
+
+
+ saved
+ xmp.iid:495ec3f5-88f3-41c4-a02c-ca2d4cf46706
+ 2015-08-18T22:50:32-07:00
+ Adobe Photoshop CC 2015 (Macintosh)
+ /
+
+
+
+ 3
+ sRGB IEC61966-2.1
+ Adobe Photoshop for Macintosh -- Image Conversion Plug-in
+ False
+ PDF/X-3:2002
+ PDF/X-3:2002
+ PDF/X-3:2002
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
endstream
endobj
5 0 obj
[6 0 R]
endobj
3 0 obj
<>
endobj
7 0 obj
<>/ProcSet[/PDF/ImageC]/XObject<>>>/Type/Page>>
endobj
8 0 obj
<>stream
+q
+216 0 0 216 0 0 cm
+/Im0 Do
+Q
+
endstream
endobj
10 0 obj
<>/Filter/DCTDecode/Height 900/ImageName/Adobe#20Photoshop#20CC#202015337103393214632.jpg/Intent/RelativeColorimetric/Length 391134/Name/Adobe#20Photoshop#20CC#202015337103393214632.jpg/Subtype/Image/Type/XObject/Width 900>>stream
+ Adobe d q
+
+ q "!#917Qwy258AIVqx
+$%&'()*346:BCDEFGHJRSTUWXYZabcdefghijrstuvz Q !"1 AQ2aq#B35Rt$4789Cbrx%DsuyISVgv
+&'()*6:EFGHJTUWXYZcdefhijwz ? ?п ?ѿ ?ҿ ?ӿ ?Կ ?տ ?ֿ ? ?п ?ѿ ?ҿ ?ӿ ?Կ ?տ ?ֿ ? ?п ?ѿ ?ҿ 1ڝ|alZ+:{S@I{1}f"^OgzU%di=(&^e->q+Bi=JIGBNRf=OL"
+c+H}4yyhO6Cȇ1F 1}Jf~SWem4s|0Fƾ"d,3WJ{9%_{ѳ_yMGL}R/&FDFddJތ˱Gz?]z ԵKoRMm-HE<rӪI2<
+~~+C|bgdYGdsuDۼC" ӿ 9oi