Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for accentued letters #31

Open
pprw opened this issue Oct 15, 2024 · 7 comments
Open

Support for accentued letters #31

pprw opened this issue Oct 15, 2024 · 7 comments
Labels
enhancement New feature or request

Comments

@pprw
Copy link

pprw commented Oct 15, 2024

same problem as ocropus#189 for this fork.

@stefan6419846
Copy link
Owner

stefan6419846 commented Oct 15, 2024

Just as a quick thought: What happens if you replace the encoding in

data = data.decode('latin1')
with UTF-8?

@pprw
Copy link
Author

pprw commented Oct 15, 2024

if I do this I obtain:


$ hocr-pdf . > output.pdf 
Traceback (most recent call last):
  File "/home/pierre/.venvs/hocr/bin/hocr-pdf", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/pierre/.venvs/hocr/lib/python3.11/site-packages/hocr_tools_lib/tools/hocr_pdf.py", line 215, in main
    export_pdf(directory=args.imgdir, default_dpi=300, savefile=args.savefile)
  File "/home/pierre/.venvs/hocr/lib/python3.11/site-packages/hocr_tools_lib/tools/hocr_pdf.py", line 99, in export_pdf
    pdf.save()
  File "/home/pierre/.venvs/hocr/lib/python3.11/site-packages/reportlab/pdfgen/canvas.py", line 1299, in save
    self._doc.SaveToFile(self._filename, self)
  File "/home/pierre/.venvs/hocr/lib/python3.11/site-packages/reportlab/pdfbase/pdfdoc.py", line 215, in SaveToFile
    f.write(data)
  File "/home/pierre/.venvs/hocr/lib/python3.11/site-packages/hocr_tools_lib/tools/hocr_pdf.py", line 54, in write
    data = data.decode('UTF-8')
           ^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 10: invalid start byte

I tried with "utf8" and "utf-8" also.

@stefan6419846
Copy link
Owner

Oh, I just saw that this is the wrong place anyway - the wrapper is used for holding the generated PDF only.

I cannot reproduce your issue completely using hocr-pdf . --savefile out.pdf. The latest reportlab versions yield forme, while reportlab==4.0.9 yields formé correctly. Thus, it seems like a reportlab issue, as the font apparently has the corresponding character.

Old text operator:

BT 1 0 0 1 0 0 Tm 3 Tr 1 0 0 1 161.28 423.84 Tm 113.5 Tz /F2+0 8 Tf 9.6 TL (forme\200) Tj T* ET

New text operator:

BT 1 0 0 1 0 0 Tm 3 Tr 1 0 0 1 161.28 423.84 Tm 113.5 Tz /F2+0 8 Tf 9.6 TL (forme\000) Tj T* ET

We have to identify the relevant reportlab change for this to continue further.

If someone wants to have a look at it: The relevant file is https://hg.reportlab.com/hg-public/reportlab/file/tip/src/reportlab/pdfgen/textobject.py and the relevant aspects are handled by PDFTextObject._formatText with the branch for dynamic fonts.

@stefan6419846 stefan6419846 added the enhancement New feature or request label Oct 15, 2024
@pprw
Copy link
Author

pprw commented Oct 15, 2024

with reportlab-4.2.5,hocr-pdf . > out.pdf && pdftotext out.pdf -raw output.txt produces:

[...]forme[...]

with reportlab-4.0.9 (pip install reportlab==4.0.9 --force),hocr-pdf . > out.pdf && pdftotext out.pdf -raw output.txt produces:

[...]forme€[...]

full page

reportlab-4.2.5

22
Flat 1
THE ORIE DES ENSEMBLES. FASCICULE DE RE SULTATS.


La Notion de collection d'un petit nombre d'objets distincts est
2
commune a tous les hommes (), la notion de continuum, de masse amor-
phe, forme d'un tre s grend nombre d'objets indiscernables, pour e tre
moins courante, est copendant connue de beaucoup. Par exemple chacun
se fait une ide e pre cise d'une collection de dix pommes, et accepte
sans difficulte qu'un certain volume d'eau, qu'un certain bloc d'acier,
soient constitue s par un nombre immense de mole cules extre mement peti-
tes, quoique cette seconde conception soit infiniment plus vague, plus
the orique, que la premie re.
Ces deux notions semblent tre s diffe rentes, presque oppose es, et
cependant, il est facile de voir qu'on peut leur appliquer, de fac on
identique, certaines ope rations de l'esprit : si, dans notre collec-
tion de dix pommes, nous mettons de co te trois pommes de termine es, si,
dans notre bloc d'acier, nous taillons au burin un bloc plus petit,
nous faisons deux expe riences re alisant l'application a nos deux
collections d'une me me ope ration mentale : l'ope ration de "partition"
qui consiste a discerner dans une collection abstraite, une "partie"
de termine e.
Cette remarque n'est que la premie re et la plus simple de celles
en quoi consiste la partie de l'Analyse, connue sous le nom de
"The orie des ensembles", car celle-ci n'est pas autre chose que
l'e nume ration des proce de s mentaux qu'il est possible d'appliquer a
la notion abstraite de collection. En d'autres termes, le but de
(1)- Par "petit nombre" nous entendons un entier assez petit pour que
sa signification expe rimentale ne fasse de doute pour personne.

reportlab-4.0.9

22
Flat 1
THE€ORIE DES ENSEMBLES. FASCICULE DE RE€SULTATS.


La Notion de collection d'un petit nombre d'objets distincts est
2
commune a• tous les hommes (), la notion de continuum, de masse amor-
phe, forme€ d'un tre•s grend nombre d'objets indiscernables, pour e‚tre
moins courante, est copendant connue de beaucoup. Par exemple chacun
se fait une ide€e pre€cise d'une collection de dix pommes, et accepte
sans difficulte€ qu'un certain volume d'eau, qu'un certain bloc d'acier,
soient constitue€s par un nombre immense de mole€cules extre€mement peti-
tes, quoique cette seconde conception soit infiniment plus vague, plus
the€orique, que la premie•re.
Ces deux notions semblent tre•s diffe€rentes, presque oppose€es, et
cependant, il est facile de voir qu'on peut leur appliquer, de facƒon
identique, certaines ope€rations de l'esprit : si, dans notre collec-
tion de dix pommes, nous mettons de co‚te€ trois pommes de€termine€es, si,
dans notre bloc d'acier, nous taillons au burin un bloc plus petit,
nous faisons deux expe€riences re€alisant l'application a• nos deux
collections d'une me‚me ope€ration mentale : l'ope€ration de "partition"
qui consiste a• discerner dans une collection abstraite, une "partie"
de€termine€e.
Cette remarque n'est que la premie•re et la plus simple de celles
en quoi consiste la partie de l'Analyse, connue sous le nom de
"The€orie des ensembles", car celle-ci n'est pas autre chose que
l'e€nume€ration des proce€de€s mentaux qu'il est possible d'appliquer a•
la notion abstraite de collection. En d'autres termes, le but de
(1)- Par "petit nombre" nous entendons un entier assez petit pour que
sa signification expe€rimentale ne fasse de doute pour personne.

@stefan6419846
Copy link
Owner

I generally recommend using --savefile instead of redirects, although this should not really affect this case. Nevertheless, this requires further analysis about the external implementation changes in either case.

@pprw
Copy link
Author

pprw commented Oct 16, 2024

Thank for the advice because it was in fact related to use of >

with reportlab==4.0.9 hocr-pdf . > out.pdf && pdftotext out.pdf -raw output.txt produces for example

distinction entre fonctions mesurables, et fonctions localement
mesurables (les seules dont il e€tait question dans la ve€dacti€on pre€ce€-
dente, ou elles portaient le nom de "mesurables"). De ce fait, les ensom
bles "mesurables" ne sont autres que ceux que Bourbaki avait appele€s
"inte€grables". Maintenant, il n'y a plus de raison pour s'en tenir a‚
la terminologie barbare des "ensembles inte€grables" : il sera donc
question, ici, d'ensembles mesurables, et d'ensembles localement mecura
bles (les premiers ont une mesure finie).

and with hocr-pdf . --savefile out.pdf && pdftotext out.pdf -raw output.txt I have accented letter!

la distinction entre fonctions mesurables, et fonctions localement
mesurables (les seules dont il était question dans la védactíon précé-
dente, ou elles portaient le nom de "mesurables"). De ce fait, les ensom
bles "mesurables" ne sont autres que ceux que Bourbaki avait appelés
"intégrables". Maintenant, il n'y a plus de raison pour s'en tenir à
la terminologie barbare des "ensembles intégrables" : il sera donc
question, ici, d'ensembles mesurables, et d'ensembles localement mecura
bles (les premiers ont une mesure finie).

with latested reportlab version, I have no accent.

@pprw pprw closed this as completed Oct 16, 2024
@stefan6419846
Copy link
Owner

I am going to keep this open nevertheless for now:

  • The option to output to stdout might need fixing.
  • This should ideally work with recent reportlab versions as well.

@stefan6419846 stefan6419846 reopened this Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants