From 327df5cbbc78ce160e877eb27bae603791fe397b Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Tue, 1 Dec 2020 21:14:40 -0800 Subject: [PATCH 1/4] Use ColorConversionStrategy "LeaveColorUnchanged" Faster, still produces PDF/A --- src/ocrmypdf/_exec/ghostscript.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py index 3582a6eb..8f17719a 100644 --- a/src/ocrmypdf/_exec/ghostscript.py +++ b/src/ocrmypdf/_exec/ghostscript.py @@ -195,10 +195,11 @@ def generate_pdfa( "-dAutoFilterGrayImages=true", ] + strategy = 'LeaveColorUnchanged' # Older versions of Ghostscript expect a leading slash in # sColorConversionStrategy, newer ones should not have it. See Ghostscript # git commit fe1c025d. - strategy = 'RGB' if version() >= '9.19' else '/RGB' + strategy = ('/' + strategy) if version() < '9.19' else strategy if version() == '9.23': # 9.23: added JPEG passthrough as a new feature, but with a bug that From 390fdf8c05f5a07f25748add31d3775d7a7cf1fb Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 7 Dec 2020 21:57:10 -0800 Subject: [PATCH 2/4] Package OCR in Form XObject Should improve results in some situations where the initial content stream is messy or not well-formed. --- src/ocrmypdf/_graft.py | 51 +- .../pdf.bin | Bin 4036 -> 4036 bytes .../pdf.bin | Bin 3501 -> 3501 bytes .../pdf.bin | Bin 2962 -> 2962 bytes .../pdf.bin | Bin 4068 -> 4068 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 2989 -> 2989 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 10251 -> 10251 bytes .../hocr.bin | 1776 +++++++-------- .../txt.bin | 6 +- .../pdf.bin | Bin 11311 -> 11311 bytes .../hocr.bin | 1984 ++++++++--------- .../txt.bin | 169 +- .../pdf.bin | Bin 11615 -> 11615 bytes .../hocr.bin | 1974 ++++++++-------- .../txt.bin | 165 +- .../pdf.bin | Bin 12553 -> 12553 bytes .../hocr.bin | 68 +- .../pdf.bin | Bin 10251 -> 10251 bytes .../pdf.bin | Bin 3626 -> 3626 bytes .../pdf.bin | Bin 3310 -> 3310 bytes .../hocr.bin | 754 +++---- .../txt.bin | 18 +- .../pdf.bin | Bin 5972 -> 5972 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 2853 -> 2853 bytes tests/cache/manifest.jsonl | 108 +- .../hocr.bin | 2 +- .../pdf.bin | Bin 5225 -> 5225 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 4291 -> 4291 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 4042 -> 4042 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 8641 -> 8641 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 8230 -> 8213 bytes .../txt.bin | 4 +- .../hocr.bin | 2 +- .../pdf.bin | Bin 5766 -> 5766 bytes .../pdf.bin | Bin 11558 -> 10903 bytes .../stderr.bin | 2 - .../txt.bin | 2 - .../stderr.bin | 3 - .../hocr.bin | 2 +- .../pdf.bin | Bin 2798 -> 2798 bytes .../hocr.bin | 2 +- .../pdf.bin | Bin 12736 -> 12736 bytes 49 files changed, 3530 insertions(+), 3576 deletions(-) diff --git a/src/ocrmypdf/_graft.py b/src/ocrmypdf/_graft.py index 33d18e13..41db5e5e 100644 --- a/src/ocrmypdf/_graft.py +++ b/src/ocrmypdf/_graft.py @@ -6,22 +6,31 @@ import logging +import uuid from contextlib import suppress from pathlib import Path from typing import Optional import pikepdf +from pikepdf.objects import Dictionary, Name log = logging.getLogger(__name__) MAX_REPLACE_PAGES = 100 -def _update_page_resources(*, page, font, font_key, procset): - """Update this page's fonts with a reference to the Glyphless font""" +def _ensure_dictionary(obj, name): + if name not in obj: + obj[name] = pikepdf.Dictionary({}) + return obj[name] - if '/Resources' not in page: - page['/Resources'] = pikepdf.Dictionary({}) - resources = page['/Resources'] + +def _update_resources(*, obj, font, font_key, procset): + """Update this obj's fonts with a reference to the Glyphless font. + + obj can be a page or Form XObject. + """ + + resources = _ensure_dictionary(obj, '/Resources') try: fonts = resources['/Font'] except KeyError: @@ -32,7 +41,8 @@ def _update_page_resources(*, page, font, font_key, procset): # Reassign /ProcSet to one that just lists everything - ProcSet is # obsolete and doesn't matter but recommended for old viewer support - resources['/ProcSet'] = procset + if procset: + resources['/ProcSet'] = procset def strip_invisible_text(pdf, page): @@ -169,13 +179,13 @@ class OcrGrafter: """ page0 = self.pdf_base.pages[0] - _update_page_resources( - page=page0, font=self.font, font_key=self.font_key, procset=self.procset + _update_resources( + obj=page0, font=self.font, font_key=self.font_key, procset=self.procset ) # We cannot read and write the same file, that will corrupt it # but we don't to keep more copies than we need to. Delete intermediates. - # {interim_count} is the opened file we were updateing + # {interim_count} is the opened file we were updating # {interim_count - 1} can be deleted # {interim_count + 1} is the new file will produce and open old_file = self.output_file.with_suffix(f'.working{self.interim_count - 1}.pdf') @@ -210,6 +220,7 @@ class OcrGrafter: pdf_text_fonts = pdf_text.pages[0].Resources.get('/Font', {}) except (AttributeError, IndexError, KeyError): return None, None + pdf_text_font = None for f in possible_font_names: pdf_text_font = pdf_text_fonts.get(f, None) if pdf_text_font is not None: @@ -279,17 +290,29 @@ class OcrGrafter: # finally move the lower left corner to match the mediabox ctm = translate @ rotate @ scale @ untranslate @ corner - pdf_text_contents = ( - b'q %s cm\n' % ctm.encode() + pdf_text_contents + b'\nQ\n' + base_resources = _ensure_dictionary(base_page, '/Resources') + base_xobjs = _ensure_dictionary(base_resources, '/XObject') + text_xobj_name = Name('/' + str(uuid.uuid4())) + xobj = self.pdf_base.make_stream(pdf_text_contents) + base_xobjs[text_xobj_name] = xobj + xobj.Type = Name.XObject + xobj.Subtype = Name.Form + xobj.FormType = 1 + xobj.BBox = mediabox + _update_resources( + obj=xobj, font=font, font_key=font_key, procset=[Name.PDF] ) - new_text_layer = pikepdf.Stream(self.pdf_base, pdf_text_contents) + pdf_draw_xobj = ( + (b'q %s cm\n' % ctm.encode()) + (b'%s Do\n' % text_xobj_name) + b'\nQ\n' + ) + new_text_layer = pikepdf.Stream(self.pdf_base, pdf_draw_xobj) if strip_old_text: strip_invisible_text(self.pdf_base, base_page) base_page.page_contents_add(new_text_layer, prepend=True) - _update_page_resources( - page=base_page, font=font, font_key=font_key, procset=procset + _update_resources( + obj=base_page, font=font, font_key=font_key, procset=procset ) diff --git a/tests/cache/2400dpi/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/2400dpi/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 86270f4985ce464c4149388899fd2a2a7b326a26..023d341fe7f1307cf8e660c74b5f5738d2911594 100644 GIT binary patch delta 26 hcmX>ie?)#m5Ff9hk%769p{cQvfv$nY=6JqTMgVA<2KE2| delta 26 hcmX>ie?)#m5Ff9BnURs9nW3eTv95vn=6JqTMgVC02L1p5 diff --git a/tests/cache/3small/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/3small/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 1617a5b9bcc00c3bc95a3f7faa1d6eb204b8d01a..edfe4b01d78a195baea095045821ed779bcc78f4 100644 GIT binary patch delta 26 hcmZ20y;gdIH4m?$k%769p{bFvsjh*=W)GfJMgU -
+

diff --git a/tests/cache/aspect/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/aspect/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 4601a61056deed113e83ae5dd0077b8590e8ef60..a0e93b4114a87d718e276a7a65074e736c6f0b1f 100644 GIT binary patch delta 26 hcmZ20zE*sLH5ad;k%769p{bFnxvqi5W)H4ZMgU+_28#dy delta 26 hcmZ20zE*sLH5adenURs9nW3eLv95vnW)H4ZMgU-T28;jz diff --git a/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index ac662824..51333eae 100644 --- a/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/cardinal/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index ec8b419ea1e3a4a16e88c88f5196802e2d7d3b59..394e7bbdd0ca074128d8b9007ca16786301ff787 100644 GIT binary patch delta 26 hcmeAU=nmL0Q;pZq$iUpl(A3z_Lf61z^D?zmMgVX92de-8 delta 26 hcmeAU=nmL0Q;pZa%*e>l%+S)*T-U&S^D?zmMgVYP2eSYG diff --git a/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/hocr.bin index b8ce17c6..23a18626 100644 --- a/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/hocr.bin @@ -9,1054 +9,1054 @@ -

-
-

- - The - LinnSequencer +

+
+

+ + The + LinnSequencer - - 32 - Track - MIDI - Sequence - Recorder + + 32 + Track + MIDI + Sequence + Recorder

-
-

- - The - LinnSequencer - is - a - state-of-the-art - composition - and - performance - tool - for - the - professional - musician. - It - is +

+

+ + The + LinnSequencer + is + a + state-of-the-art + composition + and + performance + tool + for + the + professional + musician. + It + is

-

- - extremely - powerful, - yet - amazingly - simple - to - learn - and - use. - It’s - many - remarkable - features - include: +

+ + extremely + powerful, + yet + amazingly + simple + to + learn + and + use. + It’s + many + remarkable + features + include:

-

- - ¢ - Operation - is - similar - to - multi-track - tape - recorder - with - PLAY, - STOP, - RECORD, - FAST +

+ + ¢ + Operation + is + similar + to + multi-track + tape + recorder + with + PLAY, + STOP, + RECORD, + FAST - - FORWARD, - REWIND, - and - LOCATE - controls. + + FORWARD, + REWIND, + and + LOCATE + controls.

-
-

- - e - Each - of - the - 100 - sequences - contains - 32 - simultaneous, - polyphonic - tracks. - Each - track - may +

+

+ + e + Each + of + the + 100 + sequences + contains + 32 + simultaneous, + polyphonic + tracks. + Each + track + may - - be - assigned - to - one - of - 16 - MIDI - channels. - Simultaneously - plays - up - to - 16 - polyphonic + + be + assigned + to + one + of + 16 + MIDI + channels. + Simultaneously + plays + up + to + 16 + polyphonic

-
-

- - synthesizers! +

+

+ + synthesizers!

-
-

- - ¢ - Ultra-fast - 3%” - disk - drive - stores - complex - songs - in - seconds - and - holds - over - 110,000 - notes +

+

+ + ¢ + Ultra-fast + 3%” + disk + drive + stores + complex + songs + in + seconds + and + holds + over + 110,000 + notes

-
-

- - per - disk! +

+

+ + per + disk!

-
-

- - ¢ - One - or - all - tracks - may - be - TRANSPOSED - at - the - touch - of - a - key. +

+

+ + ¢ + One + or + all + tracks + may + be + TRANSPOSED + at + the + touch + of + a + key. - - e - Exclusive - real-time - ERASE - function - makes - editing - FAST. + + e + Exclusive + real-time + ERASE + function + makes + editing + FAST. - - * - Exclusive - REPEAT - function - automatically - repeats - any - held - notes - at - a - pre-selected + + * + Exclusive + REPEAT + function + automatically + repeats + any + held + notes + at + a + pre-selected

-
-

- - rhythmic - value. +

+

+ + rhythmic + value.

-
-

- - ¢ - TIMING - CORRECTION - works - during - playback - and - operates - without - ‘chopping’ - notes. +

+

+ + ¢ + TIMING + CORRECTION + works + during + playback + and + operates + without + ‘chopping’ + notes.

-
-

- - ¢ - Optional - SMPTE - time - code - synchronization. +

+

+ + ¢ + Optional + SMPTE + time + code + synchronization.

-
-

- - © - Optional - remote - control. +

+

+ + © + Optional + remote + control.

-
-

- - Recording - a - Sequence +

+

+ + Recording + a + Sequence

-

- - To - record - a - sequence, - simply - press - RECORD - and - PLAY, +

+ + To + record + a + sequence, + simply + press + RECORD + and + PLAY, - - then - play - your - MIDI - keyboard - in - time - to - the - Sequencer’s + + then + play + your + MIDI + keyboard + in + time + to + the + Sequencer’s - - click - track. - When - the - sequence - loops - back - around - to - bar - 1, + + click + track. + When + the + sequence + loops + back + around + to + bar + 1, - - you’ - ll - hear - what - you - played—only - all - timing - errors - will - be + + you’ + ll + hear + what + you + played—only + all + timing + errors + will + be

-
-

- - corrected! - (Timing - correction - may - be - adjusted - or - defeated). +

+

+ + corrected! + (Timing + correction + may + be + adjusted + or + defeated).

-
-

- - Any - additional - notes - played - will - be - added - into - the - track +

+

+ + Any + additional + notes + played + will + be + added + into + the + track - - - existing - notes - are - not - erased - while - recording! + + + existing + notes + are + not + erased + while + recording!

-

- - FAST - FORWARD, - REWIND, - and - LOCATE - controls +

+ + FAST + FORWARD, + REWIND, + and + LOCATE + controls - - may - be - used - at - any - time - to - quickly - access - any - location - in + + may + be + used + at + any + time + to + quickly + access + any + location + in - - your - sequence - for - spot-recording. - To - overdub - a - new - part, + + your + sequence + for + spot-recording. + To + overdub + a + new + part, - - select - a - different - track - and - start - recording—while - you + + select + a + different + track + and + start + recording—while + you - - record, - the - first - track - will - play - in - perfect - sync - (unless - you + + record, + the + first + track + will + play + in + perfect + sync + (unless + you - - MUTE - it, - or - SOLO - another - track). - In - this - way, - up - to - 32 + + MUTE + it, + or + SOLO + another + track). + In + this + way, + up + to + 32 - - tracks - may - be - overdubbed! - All - MIDI - effects - are - recorded + + tracks + may + be + overdubbed! + All + MIDI + effects + are + recorded - - including - pitch - bend, - modulation, - velocity, - aftertouch, + + including + pitch + bend, + modulation, + velocity, + aftertouch, - - sustain - pedal, - and - program - changes! + + sustain + pedal, + and + program + changes!

-
-

- - Editing +

+

+ + Editing

-

- - To - erase - a - wrong - note, - simply - hold - ERASE - and - press +

+ + To + erase + a + wrong + note, + simply + hold + ERASE + and + press - - the - note - to - be - erased - just - before - it - plays - in - the - sequence— + + the + note + to + be + erased + just + before + it + plays + in + the + sequence— - - when - played - back, - it - will - be - gone. - Notes - may - also - be + + when + played + back, + it + will + be + gone. + Notes + may + also + be

-
-

- - added, - erased, - or - changed - using - the - SINGLE - STEP - func- +

+

+ + added, + erased, + or + changed + using + the + SINGLE + STEP + func- - - tion. - To - overdub - notes - at - specific - points - within - a - sequence, + + tion. + To + overdub + notes + at + specific + points + within + a + sequence,

-
-

- - Additional - Features +

+

+ + Additional + Features

-
-

- - simply - use - LOCATE, - FAST - FORWARD, - or - REWIND - to +

+

+ + simply + use + LOCATE, + FAST + FORWARD, + or + REWIND + to - - find - the - desired - bar - number, - then - start - recording. + + find + the + desired + bar + number, + then + start + recording.

-

- - The - INSERT/COPY - function - allows - you - to - move - bars +

+ + The + INSERT/COPY + function + allows + you + to + move + bars - - from - one - location - to - another—in - the - same - sequence - or - a + + from + one + location + to + another—in + the + same + sequence + or + a - - different - one. - For - example, - you - might - insert - a - copy - of - the + + different + one. + For + example, + you + might + insert + a + copy + of + the - - first - verse - between - the - second - chorus - and - the - bridge. + + first + verse + between + the + second + chorus + and + the + bridge. - - DELETE - BARS - operates - the - same - way - to - remove + + DELETE + BARS + operates + the + same + way + to + remove - - unwanted - sections, + + unwanted + sections,

-
-

- - Creating - a - Song +

+

+ + Creating + a + Song

-

- - One - way - to - create - a - song - is - to - record - each - track - all - the +

+ + One + way + to + create + a + song + is + to + record + each + track + all + the - - way - through - (up - to - 999 - bars). - Another - way - is - to - record + + way + through + (up + to + 999 + bars). + Another + way + is + to + record - - each - basic - section - (verse, - chorus, - etc.) - in - individual + + each + basic + section + (verse, + chorus, + etc.) + in + individual - - sequences, - then - use - the - CREATE - SONG - function - to - “chain” + + sequences, + then + use + the + CREATE + SONG + function + to + “chain” - - them - together. - CREATE - SONG - will - then - automatically + + them + together. + CREATE + SONG + will + then + automatically - - copy - all - the - parts - into - a - new - sequence. - If - desired, - you - can + + copy + all + the + parts + into + a + new + sequence. + If + desired, + you + can - - even - set - the - last - few - bars - to - repeat - infinitely, - for - a - fadeout. + + even + set + the + last + few + bars + to + repeat + infinitely, + for + a + fadeout.

-
-

- - Composition - Without - Compromise +

+

+ + Composition + Without + Compromise

-

- - The - technology - you - use - should - never - be - so - complex - that +

+ + The + technology + you + use + should + never + be + so + complex + that - - it - interferes - with - the - creative - process. - That’s - precisely - why + + it + interferes + with + the + creative + process. + That’s + precisely + why - - the - LinnSequencer - is - designed - to - let - you - compose, - record + + the + LinnSequencer + is + designed + to + let + you + compose, + record - - and - edit - while - devoting - your - undivided - attention - to - your + + and + edit + while + devoting + your + undivided + attention + to + your - - music. - See - your - Linn - dealer - today - for - a - demonstration! + + music. + See + your + Linn + dealer + today + for + a + demonstration!

-
-

- - * - Simple, - easy - to - learn - operation—the - 32 - character - LCD - display - clearly - guides - you - through - all - operations. - If - needed, - the +

+

+ + * + Simple, + easy + to + learn + operation—the + 32 + character + LCD + display + clearly + guides + you + through + all + operations. + If + needed, + the

-
-

- - HELP - button - displays - additional - explanations. +

+

+ + HELP + button + displays + additional + explanations.

-
-

- - * - Non-destructive - recording—existing - notes - are - not - erased - while - recording. +

+

+ + * + Non-destructive + recording—existing + notes + are + not + erased + while + recording. - - ¢ - Two - FOOTSWITCH - INPUTS - may - be - assigned - to - remotely - control - many - of - the - commonly - used - functions, - including + + ¢ + Two + FOOTSWITCH + INPUTS + may + be + assigned + to + remotely + control + many + of + the + commonly + used + functions, + including

-
-

- - ERASE, - REPEAT, - PLAY/STOP, - or - LOCATE. +

+

+ + ERASE, + REPEAT, + PLAY/STOP, + or + LOCATE.

-
-

- - ¢ - Iwo - TRIGGER - OUTPUTS - may - be - programmed - to - output - pulses - at - any - selected - note - value. +

+

+ + ¢ + Iwo + TRIGGER + OUTPUTS + may + be + programmed + to + output + pulses + at + any + selected + note + value.

-
-

- - © - Will - sync - to - standard - LinnDrum - or - Linn - 9000 - sync - tone. +

+

+ + © + Will + sync + to + standard + LinnDrum + or + Linn + 9000 + sync + tone.

-
-

- - ® - Utilizes - ultra - high-speed, - 8 - MHz - 80186 - 16 - bit - computer - internally - for - FAST - operation. +

+

+ + © + Utilizes + ultra + high-speed, + 8 + MHz + 80186 + 16 + bit + computer + internally + for + FAST + operation. - - * - TEMPO - may - be - specified - in - BEATS-PER-MINUTE - or - FRAMES-PER-BEAT - at - 24, - 25, - or - 30 - frames - per - second, + + * + TEMPO + may + be + specified + in + BEATS-PER-MINUTE + or + FRAMES-PER-BEAT + at + 24, + 25, + or + 30 + frames + per + second,

-
-

- - (even - drop - frame!) +

+

+ + (even + drop + frame!)

-
-

- - ¢ - TEMPO - may - be - entered - numerically, - adjustable - in - tenths - of - a - Beat-Per-Minute - increments, - or - by - tapping - quarter - notes +

+

+ + ¢ + TEMPO + may + be + entered + numerically, + adjustable + in + tenths + of + a + Beat-Per-Minute + increments, + or + by + tapping + quarter + notes

-
-

- - on - the - TAP - TEMPO - button. +

+

+ + on + the + TAP + TEMPO + button.

-
-

- - ¢ - TEMPO - CHANGES - may - be - programmed - into - a - sequence, - with - smooth - transitions - if - desired. +

+

+ + ¢ + TEMPO + CHANGES + may + be + programmed + into + a + sequence, + with + smooth + transitions + if + desired. - - ¢ - Any - TIME - SIGNATURE - may - be - used, - and - may - be - changed - within - a - song. + + ¢ + Any + TIME + SIGNATURE + may + be + used, + and + may + be + changed + within + a + song.

-
-

- - nn +

+

+ + linn + + + Linn + Electronics, + Inc.

-
-

- - Linn - Electronics, - Inc. +

+

+ + 18720 + Oxnard + Street, + Tarzana, + CA + 91356 - - 18720 - Oxnard - Street, - Tarzana, - CA - 91356 - - - (818) - 708-8131 - TELEX - #298949 - LINN - UR + + (818) + 708-8131 + TELEX + #298949 + LINN + UR

diff --git a/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/txt.bin b/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/txt.bin index 686fd1ac..d3c2e860 100644 --- a/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/txt.bin +++ b/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt/txt.bin @@ -103,7 +103,7 @@ ERASE, REPEAT, PLAY/STOP, or LOCATE. © Will sync to standard LinnDrum or Linn 9000 sync tone. -® Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation. +© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation. * TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second, (even drop frame!) @@ -115,9 +115,9 @@ on the TAP TEMPO button. ¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired. ¢ Any TIME SIGNATURE may be used, and may be changed within a song. -nn - +linn Linn Electronics, Inc. + 18720 Oxnard Street, Tarzana, CA 91356 (818) 708-8131 TELEX #298949 LINN UR \ No newline at end of file diff --git a/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt/pdf.bin b/tests/cache/cardinal/__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt/pdf.bin index d8df92f633d9e488eed9062da9460747c099fe92..dd3620450b6bd9011fd5ddc795757f5e23ba5235 100644 GIT binary patch delta 26 hcmZ1 -
-
-

- - 2A - NNI‘I - 6F6867# - XATALL - IE18-80L - (818) +

+
+

+ + The + LinnSequencer + + + 32 + Track + MIDI + Sequence + Recorder

-
-

- - 9SEI6 - VO - “BUBZIRY, - “J0aNS - PIPUXO - OZLEI - - - “Uy - ‘soTUOMOI,q - UUrT - -

-
-
-

- - uut] - -

-
-
-

- - “‘SUOS - B - UIJIM - pasueyo - oq - ABU - pue - ‘posn - oq - AWW - AYN - IVNOIS - AWLL - AUV - - - “parlsop - Jr - SUOTIISUBI} - YIOOUIS - YIM - “BoueNbas - eB - OJUI - pourtueIZOId - 9q - ABU - SFONWHO - OdINAL - e - -

-
-
-

- - ‘uonng - OdNAL - dV - L - 9) - uO - -

-
-
-

- - sojou - Jayienb - Suiddy} - Aq - 10 - ‘syUSTIOIOUI - oINUTIAI-J8g-Jesg - & - JO - sys} - UL - ofquisn(pe - ‘ATTeouIAUINU - paiajus - oq - ABU - OdINALL - e - -

-
-
-

- - (jouer - doup - u3a9) - -

-
-
-

- - “puooes - Jed - souely - O€ - 10 - “SZ - “pz - 18 - [LVAG-MAd-SHN - VU - 10 - ALOANIWAAd-SLVAd - U! - patyoeds - aq - kewl - OAL - « - - - ‘uoTe1odo - [SVx - JO} - Aj[eusoyUT - JoyndUIOd - 11g - 9] - 98108 - ZHI - 8g - ‘poeds-ysry - Bann - soz] - e - -

-
-
-

- - "9U0} - DUAS - 0006 - UUL] - Jo - wNIqUUr] - prepue}s - 0} - OUAS - [ITAA - © - -

-
-
-

- - “ONYBA - 9}OU - poloapes - Aue - Je - sas—nd - jndyno - 07 - pewureigold - 3q - ACW - SL - Ad - LNO - YADONAL - OML - -

-
-
-

- - "ALVOOT - 10 - GOLS/AV - 1d - ‘LWddad - “ASV - -

-
-
-

- - SUIpNpoUr - ‘suOTIOUN] - posn - A[UOUILUOS - 94] - JO - AUBUT - [O1]UOD - AJ9]OWIAI - 0} - PousIsse - oq - ACUI - ST - AdNI - HOLIMSLOO - OME - « - - - “SUIPIONAI - I[IYM - P2sesd - JOU - Iv - $3}OU - BUTISIXO—ZUIPIOIA - SATON.ASOP-UON - -

-
-
-

- - ‘suoneurldxa - peuoyippe - sdeydsip - uowng - g1TqH - -

-
-
-

- - oy] - ‘pepsau - JI - ‘suoneiodo - [ye - yYsnosy] - NOA - sapins - ApIespo - Avfdsip - QO] - Joey - Z7¢ - 9y3—uoeIodo - Urea] - 0} - Ased - ‘aus - « - -

-
-
-

- - jUorel]suowtap - & - IO} - Aepol - Jayeap - uur’] - INOA - dag - ‘dISHUL - - - INOA - 0} - UONUS}]¥ - PaplAIPUN - INOA - SUTJOASp - ITY - ps - pue - - - p1osai - ‘asoduod - no - Jay - 0} - pausisap - st - 1s0uenbesuur’] - oy) - - - Aum - Aposiooid - $,Jeu], - ‘SS9d0Id - SATTBS1D - OY} - YIM - SOIOJIOIUT - - - yey) - xo]dwWI0d - Os - dq - JOA9U - P[NoUsS - osn - NOA - AZopOuYdE} - oy - -

-
-
-

- - ISTUMOIAUIO?) - NOAA - UOHISOdWIO) - -

-
-
-

- - "NOSpr] - B - Oy - ‘AONUTJUT - yada - 0} - seq - Maz - Se] - BY] - Jas - UdAd - - - uvd - NOA - ‘palisap - JJ - ‘souanbes - Mou - ¥B - OVUT - sjied - ou] - [Te - Adoo - - - ATesrewO - Ne - WI) - [IM - ONOS - ALVAAO - JeyIe80} - wey} - - - ,deyd,, - 0} - UOTOUNJ - ONOS - ALVA - ou] - asn - usy] - ‘saouanbes - - - JENPIAIpUt - UI - (“949 - ‘snJOYD - ‘aS1OA) - UOTIDIS - JIseq - Yes - - - Pl0da1 - OF - ST - ABM - JOuIOUY - “(812g - 666 - 01 - dn) - ysnory) - ABM +

+

+ + The + LinnSequencer + is + a + state-of-the-art + composition + and + performance + tool + for + the + professional + musician. + It + is

-

- - dU} - [fe - YORI] - YORs - p10991 - 0} - ST - SUOS - B - 9789I9 - 0} - ABM - SUG, - -

-
-
-

- - SUOS - & - SUTVAID - -

-
-
-

- - *suoT}oes - poJUBMUN +

+ + extremely + powerful, + yet + amazingly + simple + to + learn + and + use. + It’s + many + remarkable + features + include:

-

- - SAOUIOI - 0} - ABM - SWS - dU} - SoyeIodo - SUV - ALATAaG +

+ + ¢ + Operation + is + similar + to + multi-track + tape + recorder + with + PLAY, + STOP, + RECORD, + FAST + + + FORWARD, + REWIND, + and + LOCATE + controls. + +

+
+
+

+ + e + Each + of + the + 100 + sequences + contains + 32 + simultaneous, + polyphonic + tracks. + Each + track + may + + + be + assigned + to + one + of + 16 + MIDI + channels. + Simultaneously + plays + up + to + 16 + polyphonic + +

+
+
+

+ + synthesizers! + +

+
+
+

+ + ¢ + Ultra-fast + 3%” + disk + drive + stores + complex + songs + in + seconds + and + holds + over + 110,000 + notes + +

+
+
+

+ + per + disk! + +

+
+
+

+ + ¢ + One + or + all + tracks + may + be + TRANSPOSED + at + the + touch + of + a + key. + + + e + Exclusive + real-time + ERASE + function + makes + editing + FAST. + + + * + Exclusive + REPEAT + function + automatically + repeats + any + held + notes + at + a + pre-selected + +

+
+
+

+ + rhythmic + value. + +

+
+
+

+ + ¢ + TIMING + CORRECTION + works + during + playback + and + operates + without + ‘chopping’ + notes. + +

+
+
+

+ + ¢ + Optional + SMPTE + time + code + synchronization. + +

+
+
+

+ + © + Optional + remote + control. + +

+
+
+

+ + Recording + a + Sequence

-

- - “OBPLIq - dy} - PUB - SNIOY - PUOdAS - dT]] - Ud9MIAQ - SIDA - ISI +

+ + To + record + a + sequence, + simply + press + RECORD + and + PLAY, + + + then + play + your + MIDI + keyboard + in + time + to + the + Sequencer’s + + + click + track. + When + the + sequence + loops + back + around + to + bar + 1, + + + you’ + ll + hear + what + you + played—only + all + timing + errors + will + be + +

+
+
+

+ + corrected! + (Timing + correction + may + be + adjusted + or + defeated). + +

+
+
+

+ + Any + additional + notes + played + will + be + added + into + the + track + + + + existing + notes + are + not + erased + while + recording!

-

- - ay) - Jo - Adoo - B - JJasuT - WYSE - NOAA - ‘afdwexs - 10.f - ‘UO - JUSIN]JIP +

+ + FAST + FORWARD, + REWIND, + and + LOCATE + controls + + + may + be + used + at + any + time + to + quickly + access + any + location + in + + + your + sequence + for + spot-recording. + To + overdub + a + new + part, + + + select + a + different + track + and + start + recording—while + you + + + record, + the + first + track + will + play + in + perfect + sync + (unless + you + + + MUTE + it, + or + SOLO + another + track). + In + this + way, + up + to + 32 + + + tracks + may + be + overdubbed! + All + MIDI + effects + are + recorded + + + including + pitch + bend, + modulation, + velocity, + aftertouch, + + + sustain + pedal, + and + program + changes! + +

+
+
+

+ + Editing

-

- - B - IO - aouaNbas - sues - OY} - UI—JOY - OUP - 0} - UOTIEIO] - 9UO - WOT] +

+ + To + erase + a + wrong + note, + simply + hold + ERASE + and + press - - $1Bq - JAOUI - OF - NOA - sMOTIe - WOTIOUNS - AdOO/IMASNI - OULL + + the + note + to + be + erased + just + before + it + plays + in + the + sequence— + + + when + played + back, + it + will + be + gone. + Notes + may + also + be + +

+
+
+

+ + added, + erased, + or + changed + using + the + SINGLE + STEP + func- + + + tion. + To + overdub + notes + at + specific + points + within + a + sequence, + +

+
+
+

+ + Additional + Features + +

+
+
+

+ + simply + use + LOCATE, + FAST + FORWARD, + or + REWIND + to + + + find + the + desired + bar + number, + then + start + recording.

-

- - ‘SUIPIONAI - JIVIS - Udy) - “OQuINU - eq - porisop - ay} - puy +

+ + The + INSERT/COPY + function + allows + you + to + move + bars + + + from + one + location + to + another—in + the + same + sequence + or + a + + + different + one. + For + example, + you + might + insert + a + copy + of + the + + + first + verse + between + the + second + chorus + and + the + bridge. + + + DELETE + BARS + operates + the + same + way + to + remove + + + unwanted + sections, + +

+
+
+

+ + Creating + a + Song

-

- - 0} - CNIMAY - 10 - ‘CYVM - Od - LSWA - “AEVOOT - esn - Apduns +

+ + One + way + to + create + a + song + is + to + record + each + track + all + the + + + way + through + (up + to + 999 + bars). + Another + way + is + to + record + + + each + basic + section + (verse, + chorus, + etc.) + in + individual + + + sequences, + then + use + the + CREATE + SONG + function + to + “chain” + + + them + together. + CREATE + SONG + will + then + automatically + + + copy + all + the + parts + into + a + new + sequence. + If + desired, + you + can + + + even + set + the + last + few + bars + to + repeat + infinitely, + for + a + fadeout.

-
-

- - sainjeay - [PUOHIPPY - -

-
-
-

- - ‘gouanbas - & - UTYIIM - s]UTOd - a1y1dads - - $9100 - QnPIOAO - OL - "UOT} - - - -ouns - dALLS - ATONIS - 24) - Suisn - pasueyo - Jo - ‘pasesa - ‘pappe - - - aq - osye - ABUT - S9]ON - ‘U0 - 9q - ]IIM - 1 - “yoeq - podeyd - uayM - - - —aouanbas - oy] - ul - skeyd - 71 - a10J9q - Isnf - posers - oq - 0} - d]0U - ayy - - - ssaid - pue - ASvwug - ploy - Aydunis - ‘jou - Suomm - & - aseso - OL - -

-
-
-

- - sunipa - -

-
-
-

- - jsesdueyo - ureisoid - pue - ‘fepod - ureysns - - - ‘yonoplalje - ‘AWOOTOA - ‘UOTyeTNpow - ‘pusg - youd - Surpnyour - - - pep10del - are - $199JJ2 - TCTIN - [WV - iPeqqnpseao - aq - Aeur - syoen - - - Ze - 07 - dn - ‘Kem - sie - Uy - *(foeI} - JOyOUR - OJOS - 10 - ALLAN - - - NOA - ssofum) - duAS - yOaysod - ul - Avy - [[IM - Yow] - ISI - 93 - “prooar - - - NOA - 3[IYM—SUIPIOIA - LIBIS - PU - YORI) - TUdIOTJIP - B - JOaTas - - - *y1ed - MOU - B - QNPIsA0 - OL, - “SuIps0daJ-jods - 10} - aouanbes - mno0k - - - UI - UOHBIO] - Aue - ssad0e - ATYOIND - 0} - owt} - Aue - ye - pasn - aq - AvUE - - - SJONUOD - FLIVOOT - pur - ‘ANIMA - ‘CYVMaYOd - LSVd - - - {SUIPIOSAI - {IY - posesa - JOU - se - So]OU - SuTsTXO— - - - yous} - 3U} - OUT - poppe - aq - JIM - poteyd - sajou - yeuonippe - Auy - -

-
-
-

- - *(povesjap - 10 - poysn{pe - oq - ABW - UOTIIII0D - BUTUTT]) - j{paqoeLI09 - -

-
-
-

- - 2q - ][IM - S1OLIe - Sur - [fe - ATUO—patey]d - nod - Jey - Jedy - ]],NOA +

+

+ + Composition + Without + Compromise

-

- - ‘] - req - 0] - punose - yoeq - sdoo] - sduanbas - ay] - Udy - AA - “YOu - Yor +

+ + The + technology + you + use + should + never + be + so + complex + that -

- -

- - §,sa0uaNbas - at} - O] - SUIT) - UI - preogday - [IW] - INO - Avy - usy3 + + it + interferes + with + the + creative + process. + That’s + precisely + why - - AV'1d - pue - (YOON - ssoid - Ayduus - ‘aousnbes - & - p1o09es - OF, + + the + LinnSequencer + is + designed + to + let + you + compose, + record + + + and + edit + while + devoting + your + undivided + attention + to + your + + + music. + See + your + Linn + dealer + today + for + a + demonstration!

-
-

- - g0uaNbas - & - SUIP10I0y] +

+

+ + * + Simple, + easy + to + learn + operation—the + 32 + character + LCD + display + clearly + guides + you + through + all + operations. + If + needed, + the

-
-

- - ‘JONWOD - s}JouNaI - TeuONdGO - e +

+

+ + HELP + button + displays + additional + explanations.

-
-

- - "UOTJEZIUOIYUAS - OPOS - UIT} - FLAWS - [euondo - e +

+

+ + * + Non-destructive + recording—existing + notes + are + not + erased + while + recording. + + + ¢ + Two + FOOTSWITCH + INPUTS + may + be + assigned + to + remotely + control + many + of + the + commonly + used + functions, + including

-
-

- - ‘sou - .sulddoys, - noyyM - sayelodo - pue - yoegdvyd - ZuLINp - S¥IOM - NOLLOANNYOO - ONIWILL - e +

+

+ + ERASE, + REPEAT, + PLAY/STOP, + or + LOCATE.

-
-

- - ‘onqea - ory - AY +

+

+ + ¢ + Iwo + TRIGGER + OUTPUTS + may + be + programmed + to + output + pulses + at + any + selected + note + value.

-
-

- - pojoojes-oid - & - ye - sajou - pyoy - Aue - syeadas - ATTeONewWO - Ne - UOTOUNS - [WAdAY - OAISNOX - e - - - ‘LSVJ - SUnIpS - soyeu - UOTOUN - ASV - UA - OUlN-[eal - SAISNIOXY - e - - - ‘Koy - B - JO - YONO} - 941 - 12 - CASOdSNVALL - 0g - ABU - Syde] - [Te - 10 - 9UC - e +

+

+ + © + Will + sync + to + standard + LinnDrum + or + Linn + 9000 + sync + tone.

-
-

- - i - ASIP - Jed +

+

+ + © + Utilizes + ultra + high-speed, + 8 + MHz + 80186 + 16 + bit + computer + internally + for + FAST + operation. + + + * + TEMPO + may + be + specified + in + BEATS-PER-MINUTE + or + FRAMES-PER-BEAT + at + 24, + 25, + or + 30 + frames + per + second,

-
-

- - S9}0U - OOO‘OTT - JOA - SpfOy - puv - SpUOdeS - UT - SBUOS - Xa[AUIOD - So10}S - DALIP - YSIP - , - 74 - - ISCJ-CNIN +

+

+ + (even + drop + frame!)

-
-

- - jSIOZISOUJUAS +

+

+ + ¢ + TEMPO + may + be + entered + numerically, + adjustable + in + tenths + of + a + Beat-Per-Minute + increments, + or + by + tapping + quarter + notes

-
-

- - stuoydAjod - of - 0} - dn - skeyd - A[snoourynuls - ‘spouueYd - [IW - 9T - JO - duo - 0} - pousisse - oq - - - ABUL - YORI] - YOR - ‘syous) - oruoydAjod - ‘snoouelnurs - - SuTeJUOS - ssouUaNbas - QO] - OY} - JO - YORA - e +

+

+ + on + the + TAP + TEMPO + button.

-
-

- - ‘SJONUOS - ATWOOT - pur - ‘GNIMAY - ‘GaVM - OA +

+

+ + ¢ + TEMPO + CHANGES + may + be + programmed + into + a + sequence, + with + smooth + transitions + if + desired. - - LSVd - ‘GYOOde - AOLS - ‘AV - Td - YIM - Jopsocas - ade} - Yowsj-N[NU - O} - eps - st - UOTLISdO - @ - - - LOPNOUT - SaINjeoy - s[quyIeUlss - AUB - S.JJ - ‘OSN - pue - UIes] - 0} - o[duns - A[suIzeUe - JOA - ‘PnJsomod - APOUIOITXO - - - St - 1] - “UeIOIsNUL - feUOIssajoid - oY} - 10 - JOO} - soUBULIOJIJAd - pue - UOTIsOduIOS - 11e-dY1-JO-9}e)s - B - SI - IONUANbDaguUT] - ay + + ¢ + Any + TIME + SIGNATURE + may + be + used, + and + may + be + changed + within + a + song.

-
-

- - JOps1odady - soUINbIS - [GTI - YVAL - ZE +

+

+ + linn - - Jgouanbaguury - oy + + Linn + Electronics, + Inc. + +

+
+
+

+ + 18720 + Oxnard + Street, + Tarzana, + CA + 91356 + + + (818) + 708-8131 + TELEX + #298949 + LINN + UR

diff --git a/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/txt.bin b/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/txt.bin index d80b111f..d3c2e860 100644 --- a/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/txt.bin +++ b/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/txt.bin @@ -1,128 +1,123 @@ -2A NNI‘I 6F6867# XATALL IE18-80L (818) +The LinnSequencer +32 Track MIDI Sequence Recorder -9SEI6 VO “BUBZIRY, “J0aNS PIPUXO OZLEI -“Uy ‘soTUOMOI,q UUrT +The LinnSequencer is a state-of-the-art composition and performance tool for the professional musician. It is -uut] +extremely powerful, yet amazingly simple to learn and use. It’s many remarkable features include: -“‘SUOS B UIJIM pasueyo oq ABU pue ‘posn oq AWW AYN IVNOIS AWLL AUV -“parlsop Jr SUOTIISUBI} YIOOUIS YIM “BoueNbas eB OJUI pourtueIZOId 9q ABU SFONWHO OdINAL e +¢ Operation is similar to multi-track tape recorder with PLAY, STOP, RECORD, FAST +FORWARD, REWIND, and LOCATE controls. -‘uonng OdNAL dV L 9) uO +e Each of the 100 sequences contains 32 simultaneous, polyphonic tracks. Each track may +be assigned to one of 16 MIDI channels. Simultaneously plays up to 16 polyphonic -sojou Jayienb Suiddy} Aq 10 ‘syUSTIOIOUI oINUTIAI-J8g-Jesg & JO sys} UL ofquisn(pe ‘ATTeouIAUINU paiajus oq ABU OdINALL e +synthesizers! -(jouer doup u3a9) +¢ Ultra-fast 3%” disk drive stores complex songs in seconds and holds over 110,000 notes -“puooes Jed souely O€ 10 “SZ “pz 18 [LVAG-MAd-SHN VU 10 ALOANIWAAd-SLVAd U! patyoeds aq kewl OAL « -‘uoTe1odo [SVx JO} Aj[eusoyUT JoyndUIOd 11g 9] 98108 ZHI 8g ‘poeds-ysry Bann soz] e +per disk! -"9U0} DUAS 0006 UUL] Jo wNIqUUr] prepue}s 0} OUAS [ITAA © +¢ One or all tracks may be TRANSPOSED at the touch of a key. +e Exclusive real-time ERASE function makes editing FAST. +* Exclusive REPEAT function automatically repeats any held notes at a pre-selected -“ONYBA 9}OU poloapes Aue Je sas—nd jndyno 07 pewureigold 3q ACW SL Ad LNO YADONAL OML +rhythmic value. -"ALVOOT 10 GOLS/AV 1d ‘LWddad “ASV +¢ TIMING CORRECTION works during playback and operates without ‘chopping’ notes. -SUIpNpoUr ‘suOTIOUN] posn A[UOUILUOS 94] JO AUBUT [O1]UOD AJ9]OWIAI 0} PousIsse oq ACUI ST AdNI HOLIMSLOO OME « -“SUIPIONAI I[IYM P2sesd JOU Iv $3}OU BUTISIXO—ZUIPIOIA SATON.ASOP-UON +¢ Optional SMPTE time code synchronization. -‘suoneurldxa peuoyippe sdeydsip uowng g1TqH +© Optional remote control. -oy] ‘pepsau JI ‘suoneiodo [ye yYsnosy] NOA sapins ApIespo Avfdsip QO] Joey Z7¢ 9y3—uoeIodo Urea] 0} Ased ‘aus « +Recording a Sequence -jUorel]suowtap & IO} Aepol Jayeap uur’] INOA dag ‘dISHUL -INOA 0} UONUS}]¥ PaplAIPUN INOA SUTJOASp ITY ps pue -p1osai ‘asoduod no Jay 0} pausisap st 1s0uenbesuur’] oy) -Aum Aposiooid $,Jeu], ‘SS9d0Id SATTBS1D OY} YIM SOIOJIOIUT -yey) xo]dwWI0d Os dq JOA9U P[NoUsS osn NOA AZopOuYdE} oy +To record a sequence, simply press RECORD and PLAY, +then play your MIDI keyboard in time to the Sequencer’s +click track. When the sequence loops back around to bar 1, +you’ ll hear what you played—only all timing errors will be -ISTUMOIAUIO?) NOAA UOHISOdWIO) +corrected! (Timing correction may be adjusted or defeated). -"NOSpr] B Oy ‘AONUTJUT yada 0} seq Maz Se] BY] Jas UdAd -uvd NOA ‘palisap JJ ‘souanbes Mou ¥B OVUT sjied ou] [Te Adoo -ATesrewO Ne WI) [IM ONOS ALVAAO JeyIe80} wey} -,deyd,, 0} UOTOUNJ ONOS ALVA ou] asn usy] ‘saouanbes -JENPIAIpUt UI (“949 ‘snJOYD ‘aS1OA) UOTIDIS JIseq Yes -Pl0da1 OF ST ABM JOuIOUY “(812g 666 01 dn) ysnory) ABM +Any additional notes played will be added into the track +— existing notes are not erased while recording! -dU} [fe YORI] YORs p10991 0} ST SUOS B 9789I9 0} ABM SUG, +FAST FORWARD, REWIND, and LOCATE controls +may be used at any time to quickly access any location in +your sequence for spot-recording. To overdub a new part, +select a different track and start recording—while you +record, the first track will play in perfect sync (unless you +MUTE it, or SOLO another track). In this way, up to 32 +tracks may be overdubbed! All MIDI effects are recorded +including pitch bend, modulation, velocity, aftertouch, +sustain pedal, and program changes! -SUOS & SUTVAID +Editing -*suoT}oes poJUBMUN +To erase a wrong note, simply hold ERASE and press +the note to be erased just before it plays in the sequence— +when played back, it will be gone. Notes may also be -SAOUIOI 0} ABM SWS dU} SoyeIodo SUV ALATAaG +added, erased, or changed using the SINGLE STEP func- +tion. To overdub notes at specific points within a sequence, -“OBPLIq dy} PUB SNIOY PUOdAS dT]] Ud9MIAQ SIDA ISI +Additional Features -ay) Jo Adoo B JJasuT WYSE NOAA ‘afdwexs 10.f ‘UO JUSIN]JIP +simply use LOCATE, FAST FORWARD, or REWIND to +find the desired bar number, then start recording. -B IO aouaNbas sues OY} UI—JOY OUP 0} UOTIEIO] 9UO WOT] -$1Bq JAOUI OF NOA sMOTIe WOTIOUNS AdOO/IMASNI OULL +The INSERT/COPY function allows you to move bars +from one location to another—in the same sequence or a +different one. For example, you might insert a copy of the +first verse between the second chorus and the bridge. +DELETE BARS operates the same way to remove +unwanted sections, -‘SUIPIONAI JIVIS Udy) “OQuINU eq porisop ay} puy +Creating a Song -0} CNIMAY 10 ‘CYVM Od LSWA “AEVOOT esn Apduns +One way to create a song is to record each track all the +way through (up to 999 bars). Another way is to record +each basic section (verse, chorus, etc.) in individual +sequences, then use the CREATE SONG function to “chain” +them together. CREATE SONG will then automatically +copy all the parts into a new sequence. If desired, you can +even set the last few bars to repeat infinitely, for a fadeout. -sainjeay [PUOHIPPY +Composition Without Compromise -‘gouanbas & UTYIIM s]UTOd a1y1dads 3¥ $9100 QnPIOAO OL "UOT} --ouns dALLS ATONIS 24) Suisn pasueyo Jo ‘pasesa ‘pappe -aq osye ABUT S9]ON ‘U0 9q ]IIM 1 “yoeq podeyd uayM -—aouanbas oy] ul skeyd 71 a10J9q Isnf posers oq 0} d]0U ayy -ssaid pue ASvwug ploy Aydunis ‘jou Suomm & aseso OL +The technology you use should never be so complex that +it interferes with the creative process. That’s precisely why +the LinnSequencer is designed to let you compose, record +and edit while devoting your undivided attention to your +music. See your Linn dealer today for a demonstration! -sunipa +* Simple, easy to learn operation—the 32 character LCD display clearly guides you through all operations. If needed, the -jsesdueyo ureisoid pue ‘fepod ureysns -‘yonoplalje ‘AWOOTOA ‘UOTyeTNpow ‘pusg youd Surpnyour -pep10del are $199JJ2 TCTIN [WV iPeqqnpseao aq Aeur syoen -Ze 07 dn ‘Kem sie Uy *(foeI} JOyOUR OJOS 10 ALLAN -NOA ssofum) duAS yOaysod ul Avy [[IM Yow] ISI 93 “prooar -NOA 3[IYM—SUIPIOIA LIBIS PU YORI) TUdIOTJIP B JOaTas -*y1ed MOU B QNPIsA0 OL, “SuIps0daJ-jods 10} aouanbes mno0k -UI UOHBIO] Aue ssad0e ATYOIND 0} owt} Aue ye pasn aq AvUE -SJONUOD FLIVOOT pur ‘ANIMA ‘CYVMaYOd LSVd -{SUIPIOSAI {IY posesa JOU se So]OU SuTsTXO— -yous} 3U} OUT poppe aq JIM poteyd sajou yeuonippe Auy +HELP button displays additional explanations. -*(povesjap 10 poysn{pe oq ABW UOTIIII0D BUTUTT]) j{paqoeLI09 +* Non-destructive recording—existing notes are not erased while recording. +¢ Two FOOTSWITCH INPUTS may be assigned to remotely control many of the commonly used functions, including -2q ][IM S1OLIe Sur [fe ATUO—patey]d nod Jey Jedy ]],NOA +ERASE, REPEAT, PLAY/STOP, or LOCATE. -‘] req 0] punose yoeq sdoo] sduanbas ay] Udy AA “YOu Yor +¢ Iwo TRIGGER OUTPUTS may be programmed to output pulses at any selected note value. -§,sa0uaNbas at} O] SUIT) UI preogday [IW] INO Avy usy3 -AV'1d pue (YOON ssoid Ayduus ‘aousnbes & p1o09es OF, +© Will sync to standard LinnDrum or Linn 9000 sync tone. -g0uaNbas & SUIP10I0y] +© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation. +* TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second, -‘JONWOD s}JouNaI TeuONdGO e +(even drop frame!) -"UOTJEZIUOIYUAS OPOS UIT} FLAWS [euondo e +¢ TEMPO may be entered numerically, adjustable in tenths of a Beat-Per-Minute increments, or by tapping quarter notes -‘sou .sulddoys, noyyM sayelodo pue yoegdvyd ZuLINp S¥IOM NOLLOANNYOO ONIWILL e +on the TAP TEMPO button. -‘onqea ory AY +¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired. +¢ Any TIME SIGNATURE may be used, and may be changed within a song. -pojoojes-oid & ye sajou pyoy Aue syeadas ATTeONewWO Ne UOTOUNS [WAdAY OAISNOX e -‘LSVJ SUnIpS soyeu UOTOUN ASV UA OUlN-[eal SAISNIOXY e -‘Koy B JO YONO} 941 12 CASOdSNVALL 0g ABU Syde] [Te 10 9UC e +linn +Linn Electronics, Inc. -i ASIP Jed - -S9}0U OOO‘OTT JOA SpfOy puv SpUOdeS UT SBUOS Xa[AUIOD So10}S DALIP YSIP , 74 € ISCJ-CNIN - -jSIOZISOUJUAS - -stuoydAjod of 0} dn skeyd A[snoourynuls ‘spouueYd [IW 9T JO duo 0} pousisse oq -ABUL YORI] YOR ‘syous) oruoydAjod ‘snoouelnurs 7¢ SuTeJUOS ssouUaNbas QO] OY} JO YORA e - -‘SJONUOS ATWOOT pur ‘GNIMAY ‘GaVM OA -LSVd ‘GYOOde AOLS ‘AV Td YIM Jopsocas ade} Yowsj-N[NU O} eps st UOTLISdO @ -LOPNOUT SaINjeoy s[quyIeUlss AUB S.JJ ‘OSN pue UIes] 0} o[duns A[suIzeUe JOA ‘PnJsomod APOUIOITXO -St 1] “UeIOIsNUL feUOIssajoid oY} 10 JOO} soUBULIOJIJAd pue UOTIsOduIOS 11e-dY1-JO-9}e)s B SI IONUANbDaguUT] ay - -JOps1odady soUINbIS [GTI YVAL ZE -Jgouanbaguury oy +18720 Oxnard Street, Tarzana, CA 91356 +(818) 708-8131 TELEX #298949 LINN UR \ No newline at end of file diff --git a/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt/pdf.bin b/tests/cache/cardinal/__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt/pdf.bin index 9e0083188715b4a4128af76c618f96f90e2b1c01..a9c86e15b00193034bcf2486275e3c6bfe323f43 100644 GIT binary patch delta 26 hcmcZ~bw6su8*N@gBLj0ILsMfT16>1)%|Er%7y*ix2@wDQ delta 26 hcmcZ~bw6su8*N?#Gb1BIGeb*L3ta>A%|Er%7y*kz2_XOg diff --git a/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin index 2567ab7e..518ac636 100644 --- a/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin @@ -9,1070 +9,1054 @@ -
-
-

- - 2A - NNI‘I - 6F6867# - XATALL - IE18-80L - (818) +

+
+

+ + The + LinnSequencer + + + 32 + Track + MIDI + Sequence + Recorder

-
-

- - 9SEI6 - VO - “BUBZIRY, - “J0aNS - PIPUXO - OZLEI - - - “Uy - ‘soTUOMOI,q - UUrT - -

-
-
-

- - uu - -

-
-
-

- - “‘SUOS - B - UIJIM - pasueyo - oq - ABU - pue - ‘posn - oq - AWW - AYN - IVNOIS - AWLL - AUV - - - “parlsop - Jr - SUOTIISUBI} - YIOOUIS - YIM - “BoueNbas - eB - OJUI - pourtueIZOId - 9q - ABU - SFONWHO - OdINAL - e - -

-
-
-

- - ‘uonng - OdNAL - dV - L - 9) - uO - -

-
-
-

- - sojou - Jayienb - Suiddy} - Aq - 10 - ‘syUSTIOIOUI - oINUTIAI-J8g-Jesg - & - JO - sys} - UL - ofquisn(pe - ‘ATTeouIAUINU - paiajus - oq - ABU - OdINALL - e - -

-
-
-

- - (jouer - doup - u3a9) - -

-
-
-

- - “puooes - Jed - souely - O€ - 10 - “SZ - “pz - 18 - [LVAG-MAd-SHN - VU - 10 - ALOANIWAAd-SLVAd - U! - patyoeds - aq - kewl - OAL - « - - - ‘uoTe1odo - [SVx - JO} - Aj[eusoyUT - JoyndUIOd - 11g - 9] - 98108 - ZHI - 8g - ‘poeds-ysry - Bann - soz] - e - -

-
-
-

- - "9U0} - DUAS - 0006 - UUL] - Jo - wNIqUUr] - prepue}s - 0} - OUAS - [ITAA - © - -

-
-
-

- - “ONYBA - 9}OU - poloapes - Aue - Je - sas—nd - jndyno - 07 - pewureigold - 3q - ACW - SL - Ad - LNO - YADONAL - OML - -

-
-
-

- - "ALVOOT - 10 - GOLS/AV - 1d - ‘LWddad - “ASV - -

-
-
-

- - SUIpNpoUr - ‘suOTIOUN] - posn - A[UOUILUOS - 94] - JO - AUBUT - [O1]UOD - AJ9]OWIAI - 0} - PousIsse - oq - ACUI - ST - AdNI - HOLIMSLOO - OME - « - - - “SUIPIONAI - I[IYM - P2sesd - JOU - Iv - $3}OU - BUTISIXO—ZUIPIOIA - SATON.ASOP-UON - -

-
-
-

- - ‘suoneurldxa - peuoyippe - sdeydsip - uowng - g1TqH - -

-
-
-

- - oy] - ‘pepsau - JI - ‘suoneiodo - [ye - yYsnosy] - NOA - sapins - ApIespo - Avfdsip - QO] - Joey - Z7¢ - 9y3—uoeIodo - Urea] - 0} - Ased - ‘aus - « - -

-
-
-

- - jUorel]suowtap - & - IO} - Aepol - Jayeap - uur’] - INOA - dag - ‘dISHUL - - - INOA - 0} - UONUS}]¥ - PaplAIPUN - INOA - SUTJOASp - ITY - ps - pue - - - p1osai - ‘asoduod - no - Jay - 0} - pausisap - st - 1s0uenbesuur’] - oy) - - - Aum - Aposiooid - $,Jeu], - ‘SS9d0Id - SATTBS1D - OY} - YIM - SOIOJIOIUT - - - yey) - xo]dwWI0d - Os - dq - JOA9U - P[NoUsS - osn - NOA - AZopOuYdE} - oy - -

-
-
-

- - ISTUMOIAUIO?) - NOAA - UOHISOdWIO) - -

-
-
-

- - "NOSpr] - B - Oy - ‘AONUTJUT - yada - 0} - seq - Maz - Se] - BY] - Jas - UdAd - - - uvd - NOA - ‘palisap - JJ - ‘souanbes - Mou - ¥B - OVUT - sjied - ou] - [Te - Adoo - - - ATesrewO - Ne - WI) - [IM - ONOS - ALVAAO - JeyIe80} - wey} - - - ,deyd,, - 0} - UOTOUNJ - ONOS - ALVA - ou] - asn - usy] - ‘saouanbes - - - JENPIAIpUt - UI - (“949 - ‘snJOYD - ‘aS1OA) - UOTIDIS - JIseq - Yes - - - Pl0da1 - OF - ST - ABM - JOuIOUY - “(812g - 666 - 01 - dn) - ysnory) - ABM +

+

+ + The + LinnSequencer + is + a + state-of-the-art + composition + and + performance + tool + for + the + professional + musician. + It + is

-

- - dU} - [fe - YORI] - YORs - p10991 - 0} - ST - SUOS - B - 9789I9 - 0} - ABM - SUG, - -

-
-
-

- - SUOS - & - SUTVAID - -

-
-
-

- - *suoT}oes - poJUBMUN +

+ + extremely + powerful, + yet + amazingly + simple + to + learn + and + use. + It’s + many + remarkable + features + include:

-

- - SAOUIOI - 0} - ABM - SWS - dU} - SoyeIodo - SUV - ALATAaG +

+ + ¢ + Operation + is + similar + to + multi-track + tape + recorder + with + PLAY, + STOP, + RECORD, + FAST + + + FORWARD, + REWIND, + and + LOCATE + controls. + +

+
+
+

+ + e + Each + of + the + 100 + sequences + contains + 32 + simultaneous, + polyphonic + tracks. + Each + track + may + + + be + assigned + to + one + of + 16 + MIDI + channels. + Simultaneously + plays + up + to + 16 + polyphonic + +

+
+
+

+ + synthesizers! + +

+
+
+

+ + ¢ + Ultra-fast + 3%” + disk + drive + stores + complex + songs + in + seconds + and + holds + over + 110,000 + notes + +

+
+
+

+ + per + disk! + +

+
+
+

+ + ¢ + One + or + all + tracks + may + be + TRANSPOSED + at + the + touch + of + a + key. + + + e + Exclusive + real-time + ERASE + function + makes + editing + FAST. + + + * + Exclusive + REPEAT + function + automatically + repeats + any + held + notes + at + a + pre-selected + +

+
+
+

+ + rhythmic + value. + +

+
+
+

+ + ¢ + TIMING + CORRECTION + works + during + playback + and + operates + without + ‘chopping’ + notes. + +

+
+
+

+ + ¢ + Optional + SMPTE + time + code + synchronization. + +

+
+
+

+ + © + Optional + remote + control. + +

+
+
+

+ + Recording + a + Sequence

-

- - “OBPLIq - dy} - PUB - SNIOY - PUOdAS - dT]] - Ud9MIAQ - SIDA - ISI +

+ + To + record + a + sequence, + simply + press + RECORD + and + PLAY, + + + then + play + your + MIDI + keyboard + in + time + to + the + Sequencer’s + + + click + track. + When + the + sequence + loops + back + around + to + bar + 1, + + + you’ + ll + hear + what + you + played—only + all + timing + errors + will + be + +

+
+
+

+ + corrected! + (Timing + correction + may + be + adjusted + or + defeated). + +

+
+
+

+ + Any + additional + notes + played + will + be + added + into + the + track + + + + existing + notes + are + not + erased + while + recording!

-

- - ay) - Jo - Adoo - B - JJasuT - WYSE - NOAA - ‘afdwexs - 10.f - ‘UO - JUSIN]JIP +

+ + FAST + FORWARD, + REWIND, + and + LOCATE + controls + + + may + be + used + at + any + time + to + quickly + access + any + location + in + + + your + sequence + for + spot-recording. + To + overdub + a + new + part, + + + select + a + different + track + and + start + recording—while + you + + + record, + the + first + track + will + play + in + perfect + sync + (unless + you + + + MUTE + it, + or + SOLO + another + track). + In + this + way, + up + to + 32 + + + tracks + may + be + overdubbed! + All + MIDI + effects + are + recorded + + + including + pitch + bend, + modulation, + velocity, + aftertouch, + + + sustain + pedal, + and + program + changes! + +

+
+
+

+ + Editing

-

- - B - IO - aouaNbas - sues - OY} - UI—JOY - OUP - 0} - UOTIEIO] - 9UO - WOT] +

+ + To + erase + a + wrong + note, + simply + hold + ERASE + and + press - - $1Bq - JAOUI - OF - NOA - sMOTIe - WOTIOUNS - AdOO/IMASNI - OULL + + the + note + to + be + erased + just + before + it + plays + in + the + sequence— + + + when + played + back, + it + will + be + gone. + Notes + may + also + be + +

+
+
+

+ + added, + erased, + or + changed + using + the + SINGLE + STEP + func- + + + tion. + To + overdub + notes + at + specific + points + within + a + sequence, + +

+
+
+

+ + Additional + Features + +

+
+
+

+ + simply + use + LOCATE, + FAST + FORWARD, + or + REWIND + to + + + find + the + desired + bar + number, + then + start + recording.

-

- - ‘SUIPIONAI - JIVIS - Udy) - “OQuINU - eq - porisop - ay} - puy +

+ + The + INSERT/COPY + function + allows + you + to + move + bars + + + from + one + location + to + another—in + the + same + sequence + or + a + + + different + one. + For + example, + you + might + insert + a + copy + of + the + + + first + verse + between + the + second + chorus + and + the + bridge. + + + DELETE + BARS + operates + the + same + way + to + remove + + + unwanted + sections, + +

+
+
+

+ + Creating + a + Song

-

- - 0} - CNIMAY - 10 - ‘CYVM - Od - LSWA - “AEVOOT - esn - Apduns +

+ + One + way + to + create + a + song + is + to + record + each + track + all + the + + + way + through + (up + to + 999 + bars). + Another + way + is + to + record + + + each + basic + section + (verse, + chorus, + etc.) + in + individual + + + sequences, + then + use + the + CREATE + SONG + function + to + “chain” + + + them + together. + CREATE + SONG + will + then + automatically + + + copy + all + the + parts + into + a + new + sequence. + If + desired, + you + can + + + even + set + the + last + few + bars + to + repeat + infinitely, + for + a + fadeout.

-
-

- - sainjeay - [PUOHIPPY +

+

+ + Composition + Without + Compromise + +

+ +

+ + The + technology + you + use + should + never + be + so + complex + that + + + it + interferes + with + the + creative + process. + That’s + precisely + why + + + the + LinnSequencer + is + designed + to + let + you + compose, + record + + + and + edit + while + devoting + your + undivided + attention + to + your + + + music. + See + your + Linn + dealer + today + for + a + demonstration!

-
-

- - ‘gouanbas - & - UTYIIM - s]UTOd - a1y1dads - - $9100 - QnPIOAO - OL - "UOT} - - - -ouns - dALLS - ATONIS - 24) - Suisn - pasueyo - Jo - ‘pasesa - ‘pappe - - - aq - osye - ABUT - S9]ON - ‘U0 - 9q - ]IIM - 1 - “yoeq - podeyd - uayM - - - —aouanbas - oy] - ul - skeyd - 71 - a10J9q - Isnf - posers - oq - 0} - d]0U - ayy - - - ssaid - pue - ASvwug - ploy - Aydunis - ‘jou - Suomm - & - aseso - OL +

+

+ + * + Simple, + easy + to + learn + operation—the + 32 + character + LCD + display + clearly + guides + you + through + all + operations. + If + needed, + the

-
-

- - sunipa +

+

+ + HELP + button + displays + additional + explanations.

-
-

- - jsesdueyo - ureisoid - pue - ‘fepod - ureysns +

+

+ + * + Non-destructive + recording—existing + notes + are + not + erased + while + recording. - - ‘yonoplalje - ‘AWOOTOA - ‘UOTyeTNpow - ‘pusg - youd - Surpnyour - - - pep10del - are - $199JJ2 - TCTIN - [WV - iPeqqnpseao - aq - Aeur - syoen - - - Ze - 07 - dn - ‘Kem - sie - Uy - *(foeI} - JOyOUR - OJOS - 10 - ALLAN - - - NOA - ssofum) - duAS - yOaysod - ul - Avy - [[IM - Yow] - ISI - 93 - “prooar - - - NOA - 3[IYM—SUIPIOIA - LIBIS - PU - YORI) - TUdIOTJIP - B - JOaTas - - - *y1ed - MOU - B - QNPIsA0 - OL, - “SuIps0daJ-jods - 10} - aouanbes - mno0k - - - UI - UOHBIO] - Aue - ssad0e - ATYOIND - 0} - owt} - Aue - ye - pasn - aq - AvUE - - - SJONUOD - FLIVOOT - pur - ‘ANIMA - ‘CYVMaYOd - LSVd - - - {SUIPIOSAI - {IY - posesa - JOU - se - So]OU - SuTsTXO— - - - yous} - 3U} - OUT - poppe - aq - JIM - poteyd - sajou - yeuonippe - Auy - - - *(povesjap - 10 - poysn{pe - oq - ABW - UOTIIII0D - BUTUTT]) - j{paqoeLI09 - - - 2q - ][IM - S1OLIe - Sur - [fe - ATUO—patey]d - nod - Jey - Jedy - ]],NOA - - - ‘] - req - 0] - punose - yoeq - sdoo] - sduanbas - ay] - Udy - AA - “YOu - Yor - - - §,sa0uaNbas - at} - O] - SUIT) - UI - preogday - [IW] - INO - Avy - usy3 - - - AV'1d - pue - (YOON - ssoid - Ayduus - ‘aousnbes - & - p1o09es - OF, + + ¢ + Two + FOOTSWITCH + INPUTS + may + be + assigned + to + remotely + control + many + of + the + commonly + used + functions, + including

-
-

- - g0uaNbas - & - SUIP10I0y] +

+

+ + ERASE, + REPEAT, + PLAY/STOP, + or + LOCATE.

-
-

- - ‘JONWOD - s}JouNaI - TeuONdGO - e +

+

+ + ¢ + Iwo + TRIGGER + OUTPUTS + may + be + programmed + to + output + pulses + at + any + selected + note + value.

-
-

- - "UOTJEZIUOIYUAS - OPOS - UIT} - FLAWS - [euondo - e +

+

+ + © + Will + sync + to + standard + LinnDrum + or + Linn + 9000 + sync + tone.

-
-

- - ‘sou - .sulddoys, - noyyM - sayelodo - pue - yoegdvyd - ZuLINp - S¥IOM - NOLLOANNYOO - ONIWILL - e +

+

+ + © + Utilizes + ultra + high-speed, + 8 + MHz + 80186 + 16 + bit + computer + internally + for + FAST + operation. + + + * + TEMPO + may + be + specified + in + BEATS-PER-MINUTE + or + FRAMES-PER-BEAT + at + 24, + 25, + or + 30 + frames + per + second,

-
-

- - ‘onqea - ory - AY +

+

+ + (even + drop + frame!)

-
-

- - pojoojes-oid - & - ye - sajou - pyoy - Aue - syeadas - ATTeONewWO - Ne - UOTOUNS - [WAdAY - OAISNOX - e - - - ‘LSVJ - SUnIpS - soyeu - UOTOUN - ASV - UA - OUlN-[eal - SAISNIOXY - e - - - ‘Koy - B - JO - YONO} - 941 - 12 - CASOdSNVALL - 0g - ABU - Syde] - [Te - 10 - 9UC - e +

+

+ + ¢ + TEMPO + may + be + entered + numerically, + adjustable + in + tenths + of + a + Beat-Per-Minute + increments, + or + by + tapping + quarter + notes

-
-

- - i - ASIP - Jed +

+

+ + on + the + TAP + TEMPO + button.

-
-

- - S9}0U - OOO‘OTT - JOA - SpfOy - puv - SpUOdeS - UT - SBUOS - Xa[AUIOD - So10}S - DALIP - YSIP - , - 74 - - ISCJ-CNIN +

+

+ + ¢ + TEMPO + CHANGES + may + be + programmed + into + a + sequence, + with + smooth + transitions + if + desired. + + + ¢ + Any + TIME + SIGNATURE + may + be + used, + and + may + be + changed + within + a + song.

-
-

- - jSIOZISOUJUAS +

+

+ + linn + + + Linn + Electronics, + Inc.

-
-

- - stuoydAjod - of - 0} - dn - skeyd - A[snoourynuls - ‘spouueYd - [IW - 9T - JO - duo - 0} - pousisse - oq +

+

+ + 18720 + Oxnard + Street, + Tarzana, + CA + 91356 - - ABUL - YORI] - YOR - ‘syous) - oruoydAjod - ‘snoouelnurs - - SuTeJUOS - ssouUaNbas - QO] - OY} - JO - YORA - e - -

-
-
-

- - ‘SJONUOS - ATWOOT - pur - ‘GNIMAY - ‘GaVM - OA - - - LSVd - ‘GYOOde - AOLS - ‘AV - Td - YIM - Jopsocas - ade} - Yowsj-N[NU - O} - eps - st - UOTLISdO - @ - - - LOPNOUT - SaINjeoy - s[quyIeUlss - AUB - S.JJ - ‘OSN - pue - UIes] - 0} - o[duns - A[suIzeUe - JOA - ‘PnJsomod - APOUIOITXO - - - St - 1] - “UeIOIsNUL - feUOIssajoid - oY} - 10 - JOO} - soUBULIOJIJAd - pue - UOTIsOduIOS - 11e-dY1-JO-9}e)s - B - SI - IONUANbDaguUT] - ay - -

-
-
-

- - JOps1odady - soUINbIS - [GTI - YVAL - ZE - - - Jgouanbaguury - oy + + (818) + 708-8131 + TELEX + #298949 + LINN + UR

diff --git a/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/txt.bin b/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/txt.bin index 137fef56..d3c2e860 100644 --- a/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/txt.bin +++ b/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/txt.bin @@ -1,124 +1,123 @@ -2A NNI‘I 6F6867# XATALL IE18-80L (818) +The LinnSequencer +32 Track MIDI Sequence Recorder -9SEI6 VO “BUBZIRY, “J0aNS PIPUXO OZLEI -“Uy ‘soTUOMOI,q UUrT +The LinnSequencer is a state-of-the-art composition and performance tool for the professional musician. It is -uu +extremely powerful, yet amazingly simple to learn and use. It’s many remarkable features include: -“‘SUOS B UIJIM pasueyo oq ABU pue ‘posn oq AWW AYN IVNOIS AWLL AUV -“parlsop Jr SUOTIISUBI} YIOOUIS YIM “BoueNbas eB OJUI pourtueIZOId 9q ABU SFONWHO OdINAL e +¢ Operation is similar to multi-track tape recorder with PLAY, STOP, RECORD, FAST +FORWARD, REWIND, and LOCATE controls. -‘uonng OdNAL dV L 9) uO +e Each of the 100 sequences contains 32 simultaneous, polyphonic tracks. Each track may +be assigned to one of 16 MIDI channels. Simultaneously plays up to 16 polyphonic -sojou Jayienb Suiddy} Aq 10 ‘syUSTIOIOUI oINUTIAI-J8g-Jesg & JO sys} UL ofquisn(pe ‘ATTeouIAUINU paiajus oq ABU OdINALL e +synthesizers! -(jouer doup u3a9) +¢ Ultra-fast 3%” disk drive stores complex songs in seconds and holds over 110,000 notes -“puooes Jed souely O€ 10 “SZ “pz 18 [LVAG-MAd-SHN VU 10 ALOANIWAAd-SLVAd U! patyoeds aq kewl OAL « -‘uoTe1odo [SVx JO} Aj[eusoyUT JoyndUIOd 11g 9] 98108 ZHI 8g ‘poeds-ysry Bann soz] e +per disk! -"9U0} DUAS 0006 UUL] Jo wNIqUUr] prepue}s 0} OUAS [ITAA © +¢ One or all tracks may be TRANSPOSED at the touch of a key. +e Exclusive real-time ERASE function makes editing FAST. +* Exclusive REPEAT function automatically repeats any held notes at a pre-selected -“ONYBA 9}OU poloapes Aue Je sas—nd jndyno 07 pewureigold 3q ACW SL Ad LNO YADONAL OML +rhythmic value. -"ALVOOT 10 GOLS/AV 1d ‘LWddad “ASV +¢ TIMING CORRECTION works during playback and operates without ‘chopping’ notes. -SUIpNpoUr ‘suOTIOUN] posn A[UOUILUOS 94] JO AUBUT [O1]UOD AJ9]OWIAI 0} PousIsse oq ACUI ST AdNI HOLIMSLOO OME « -“SUIPIONAI I[IYM P2sesd JOU Iv $3}OU BUTISIXO—ZUIPIOIA SATON.ASOP-UON +¢ Optional SMPTE time code synchronization. -‘suoneurldxa peuoyippe sdeydsip uowng g1TqH +© Optional remote control. -oy] ‘pepsau JI ‘suoneiodo [ye yYsnosy] NOA sapins ApIespo Avfdsip QO] Joey Z7¢ 9y3—uoeIodo Urea] 0} Ased ‘aus « +Recording a Sequence -jUorel]suowtap & IO} Aepol Jayeap uur’] INOA dag ‘dISHUL -INOA 0} UONUS}]¥ PaplAIPUN INOA SUTJOASp ITY ps pue -p1osai ‘asoduod no Jay 0} pausisap st 1s0uenbesuur’] oy) -Aum Aposiooid $,Jeu], ‘SS9d0Id SATTBS1D OY} YIM SOIOJIOIUT -yey) xo]dwWI0d Os dq JOA9U P[NoUsS osn NOA AZopOuYdE} oy +To record a sequence, simply press RECORD and PLAY, +then play your MIDI keyboard in time to the Sequencer’s +click track. When the sequence loops back around to bar 1, +you’ ll hear what you played—only all timing errors will be -ISTUMOIAUIO?) NOAA UOHISOdWIO) +corrected! (Timing correction may be adjusted or defeated). -"NOSpr] B Oy ‘AONUTJUT yada 0} seq Maz Se] BY] Jas UdAd -uvd NOA ‘palisap JJ ‘souanbes Mou ¥B OVUT sjied ou] [Te Adoo -ATesrewO Ne WI) [IM ONOS ALVAAO JeyIe80} wey} -,deyd,, 0} UOTOUNJ ONOS ALVA ou] asn usy] ‘saouanbes -JENPIAIpUt UI (“949 ‘snJOYD ‘aS1OA) UOTIDIS JIseq Yes -Pl0da1 OF ST ABM JOuIOUY “(812g 666 01 dn) ysnory) ABM +Any additional notes played will be added into the track +— existing notes are not erased while recording! -dU} [fe YORI] YORs p10991 0} ST SUOS B 9789I9 0} ABM SUG, +FAST FORWARD, REWIND, and LOCATE controls +may be used at any time to quickly access any location in +your sequence for spot-recording. To overdub a new part, +select a different track and start recording—while you +record, the first track will play in perfect sync (unless you +MUTE it, or SOLO another track). In this way, up to 32 +tracks may be overdubbed! All MIDI effects are recorded +including pitch bend, modulation, velocity, aftertouch, +sustain pedal, and program changes! -SUOS & SUTVAID +Editing -*suoT}oes poJUBMUN +To erase a wrong note, simply hold ERASE and press +the note to be erased just before it plays in the sequence— +when played back, it will be gone. Notes may also be -SAOUIOI 0} ABM SWS dU} SoyeIodo SUV ALATAaG +added, erased, or changed using the SINGLE STEP func- +tion. To overdub notes at specific points within a sequence, -“OBPLIq dy} PUB SNIOY PUOdAS dT]] Ud9MIAQ SIDA ISI +Additional Features -ay) Jo Adoo B JJasuT WYSE NOAA ‘afdwexs 10.f ‘UO JUSIN]JIP +simply use LOCATE, FAST FORWARD, or REWIND to +find the desired bar number, then start recording. -B IO aouaNbas sues OY} UI—JOY OUP 0} UOTIEIO] 9UO WOT] -$1Bq JAOUI OF NOA sMOTIe WOTIOUNS AdOO/IMASNI OULL +The INSERT/COPY function allows you to move bars +from one location to another—in the same sequence or a +different one. For example, you might insert a copy of the +first verse between the second chorus and the bridge. +DELETE BARS operates the same way to remove +unwanted sections, -‘SUIPIONAI JIVIS Udy) “OQuINU eq porisop ay} puy +Creating a Song -0} CNIMAY 10 ‘CYVM Od LSWA “AEVOOT esn Apduns +One way to create a song is to record each track all the +way through (up to 999 bars). Another way is to record +each basic section (verse, chorus, etc.) in individual +sequences, then use the CREATE SONG function to “chain” +them together. CREATE SONG will then automatically +copy all the parts into a new sequence. If desired, you can +even set the last few bars to repeat infinitely, for a fadeout. -sainjeay [PUOHIPPY +Composition Without Compromise -‘gouanbas & UTYIIM s]UTOd a1y1dads 3¥ $9100 QnPIOAO OL "UOT} --ouns dALLS ATONIS 24) Suisn pasueyo Jo ‘pasesa ‘pappe -aq osye ABUT S9]ON ‘U0 9q ]IIM 1 “yoeq podeyd uayM -—aouanbas oy] ul skeyd 71 a10J9q Isnf posers oq 0} d]0U ayy -ssaid pue ASvwug ploy Aydunis ‘jou Suomm & aseso OL +The technology you use should never be so complex that +it interferes with the creative process. That’s precisely why +the LinnSequencer is designed to let you compose, record +and edit while devoting your undivided attention to your +music. See your Linn dealer today for a demonstration! -sunipa +* Simple, easy to learn operation—the 32 character LCD display clearly guides you through all operations. If needed, the -jsesdueyo ureisoid pue ‘fepod ureysns -‘yonoplalje ‘AWOOTOA ‘UOTyeTNpow ‘pusg youd Surpnyour -pep10del are $199JJ2 TCTIN [WV iPeqqnpseao aq Aeur syoen -Ze 07 dn ‘Kem sie Uy *(foeI} JOyOUR OJOS 10 ALLAN -NOA ssofum) duAS yOaysod ul Avy [[IM Yow] ISI 93 “prooar -NOA 3[IYM—SUIPIOIA LIBIS PU YORI) TUdIOTJIP B JOaTas -*y1ed MOU B QNPIsA0 OL, “SuIps0daJ-jods 10} aouanbes mno0k -UI UOHBIO] Aue ssad0e ATYOIND 0} owt} Aue ye pasn aq AvUE -SJONUOD FLIVOOT pur ‘ANIMA ‘CYVMaYOd LSVd -{SUIPIOSAI {IY posesa JOU se So]OU SuTsTXO— -yous} 3U} OUT poppe aq JIM poteyd sajou yeuonippe Auy -*(povesjap 10 poysn{pe oq ABW UOTIIII0D BUTUTT]) j{paqoeLI09 -2q ][IM S1OLIe Sur [fe ATUO—patey]d nod Jey Jedy ]],NOA -‘] req 0] punose yoeq sdoo] sduanbas ay] Udy AA “YOu Yor -§,sa0uaNbas at} O] SUIT) UI preogday [IW] INO Avy usy3 -AV'1d pue (YOON ssoid Ayduus ‘aousnbes & p1o09es OF, +HELP button displays additional explanations. -g0uaNbas & SUIP10I0y] +* Non-destructive recording—existing notes are not erased while recording. +¢ Two FOOTSWITCH INPUTS may be assigned to remotely control many of the commonly used functions, including -‘JONWOD s}JouNaI TeuONdGO e +ERASE, REPEAT, PLAY/STOP, or LOCATE. -"UOTJEZIUOIYUAS OPOS UIT} FLAWS [euondo e +¢ Iwo TRIGGER OUTPUTS may be programmed to output pulses at any selected note value. -‘sou .sulddoys, noyyM sayelodo pue yoegdvyd ZuLINp S¥IOM NOLLOANNYOO ONIWILL e +© Will sync to standard LinnDrum or Linn 9000 sync tone. -‘onqea ory AY +© Utilizes ultra high-speed, 8 MHz 80186 16 bit computer internally for FAST operation. +* TEMPO may be specified in BEATS-PER-MINUTE or FRAMES-PER-BEAT at 24, 25, or 30 frames per second, -pojoojes-oid & ye sajou pyoy Aue syeadas ATTeONewWO Ne UOTOUNS [WAdAY OAISNOX e -‘LSVJ SUnIpS soyeu UOTOUN ASV UA OUlN-[eal SAISNIOXY e -‘Koy B JO YONO} 941 12 CASOdSNVALL 0g ABU Syde] [Te 10 9UC e +(even drop frame!) -i ASIP Jed +¢ TEMPO may be entered numerically, adjustable in tenths of a Beat-Per-Minute increments, or by tapping quarter notes -S9}0U OOO‘OTT JOA SpfOy puv SpUOdeS UT SBUOS Xa[AUIOD So10}S DALIP YSIP , 74 € ISCJ-CNIN +on the TAP TEMPO button. -jSIOZISOUJUAS +¢ TEMPO CHANGES may be programmed into a sequence, with smooth transitions if desired. +¢ Any TIME SIGNATURE may be used, and may be changed within a song. -stuoydAjod of 0} dn skeyd A[snoourynuls ‘spouueYd [IW 9T JO duo 0} pousisse oq -ABUL YORI] YOR ‘syous) oruoydAjod ‘snoouelnurs 7¢ SuTeJUOS ssouUaNbas QO] OY} JO YORA e +linn +Linn Electronics, Inc. -‘SJONUOS ATWOOT pur ‘GNIMAY ‘GaVM OA -LSVd ‘GYOOde AOLS ‘AV Td YIM Jopsocas ade} Yowsj-N[NU O} eps st UOTLISdO @ -LOPNOUT SaINjeoy s[quyIeUlss AUB S.JJ ‘OSN pue UIes] 0} o[duns A[suIzeUe JOA ‘PnJsomod APOUIOITXO -St 1] “UeIOIsNUL feUOIssajoid oY} 10 JOO} soUBULIOJIJAd pue UOTIsOduIOS 11e-dY1-JO-9}e)s B SI IONUANbDaguUT] ay - -JOps1odady soUINbIS [GTI YVAL ZE -Jgouanbaguury oy +18720 Oxnard Street, Tarzana, CA 91356 +(818) 708-8131 TELEX #298949 LINN UR \ No newline at end of file diff --git a/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt/pdf.bin b/tests/cache/cardinal/__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt/pdf.bin index 5c1ac320d98c4e47d50d19b57d4ce6dd21b32076..aa26441b2e506f838b4802fb43f79ce688f05324 100644 GIT binary patch delta 26 hcmeB7>P*@&O`q4$$iUpl(A3z-K-a)x^J4upMgVg`2hjik delta 26 hcmeB7>P*@&O`q4m%*e>l%+S)*QrEzI^J4upMgVj62jTz# diff --git a/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index 123d2a1e..d06920de 100644 --- a/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -
+

@@ -29,7 +29,7 @@

The - LinnSequencer + LinnSequencer is a state-of-the-art @@ -39,7 +39,7 @@ tool for the - professional + professional musician. It is @@ -209,7 +209,7 @@

- rhythmic + rhythmic value.

@@ -246,7 +246,7 @@

- © + © Optional remote control. @@ -300,8 +300,8 @@ 1, - you’ - ll + you’ + ll hear what you @@ -361,7 +361,7 @@ REWIND, and LOCATE - controls + controls may @@ -400,9 +400,9 @@ record, - the - first - track + the + first + track will play in @@ -412,11 +412,11 @@ you - MUTE - it, + MUTE + it, or SOLO - another + another track). In this @@ -518,13 +518,13 @@ tion. To - overdub + overdub notes at specific points - within - a + within + a sequence,

@@ -681,7 +681,7 @@ SONG function to - “chain” + “chain” them @@ -874,10 +874,10 @@

- ¢ - Iwo + ¢ + Iwo TRIGGER - OUTPUTS + OUTPUTS may be programmed @@ -887,7 +887,7 @@ at any selected - note + note value.

@@ -911,15 +911,15 @@

- - © - Utilizes - ultra + + © + Utilizes + ultra high-speed, 8 MHz - 80186 - 16 + 80186 + 16 bit computer internally @@ -960,18 +960,18 @@

- ¢ + ¢ TEMPO may - be + be entered numerically, - adjustable - in + adjustable + in tenths of - a - Beat-Per-Minute + a + Beat-Per-Minute increments, or by diff --git a/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/ccitt/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 13d33a38a99252af3e8e00cd3186c174fc1d3e6a..88bb9fc93541fbb3ab6292c2f7a1d81e0fc4f120 100644 GIT binary patch delta 26 hcmeAU=nmL0Q;pZq$iUpl(A3D-QrEy@^D?zmMgVXR2dw}A delta 26 hcmeAU=nmL0Q;pZa%*e>l%+S) -

-
-

- - 41st - CONGRESS; - | - SENATE. +

+
+

+ + 4ist + ConGREss, + } + SENATE. + { + Ex. + Doc, - - 3d - Session. - } + + 3d + Session. + No. + 25.

-
-

- - MESSAGE +

+

+ + MESSAGE

-
-

- - OF - THE +

+

+ + OF + THE

-
-

- - PRESIDENT - OF - THE - UNITED - STATES, +

+

+ + PRESIDENT + OF + THE + UNITED + STATES,

-
-

- - COMMUNICATING +

+

+ + COMMUNICATING

-
-

- - A - copy - of - regulations - for - the - consular - courts - of - the - United - States - in - Japan, +

+

+ + A + copy + of + regulations + for + the + consular + courts + of + the + United + States + in + Japan, - - decreed - and - issued - by - the - minister - of - the - United - States - in - that - country. + + decreed + and + issued + by + the + minister + of + the + United + States + in + that + country.

-
-

- - January - 27, - 1871,—Read, - referred - to - the - Committee - on - Commerce, - and - ordered - to - be +

+

+ + JANUARY + 27, + 1871,—Read, + referred + to + the + Committee + on + Commerce, + and + ordered + to + be - - printed. + + printed.

-
-

- - To - the - Senate - and - House - of - Representatives - : +

+

+ + To + the + Senate + and + House + of + Representatives + :

-

- - I - transmit - herewith, - for - the - consideration - of - Congress, - a - report - from +

+ + I + transmit + herewith, + for + the + consideration + of + Congress, + a + report + from - - the - Secretary - of - State, - and - the - papers - which - accompanied - it, - concern- + + the + Secretary + of + State, + and + the + papers + which + accompanied + it, + concern- - - ing - regulations - for - the - consular - courts - of - the - United - States - in - Japan. + + ing + regulations + for + the + consular + courts + of + the + United + States + in + Japan.

-

- - U. - 8. - GRANT. +

+ + U. + 8. + GRANT.

-

- - ‘WASHINGTON, - January - 27, - 1871. +

+ + ‘WASHINGTON, + January + 27, + 1871.

-
-

- - DEPARTMENT - OF - STATE, +

+

+ + DEPARTMENT + OF + STATE, - - . - Washington, - January - 26, - 1870, + + Washington, + January + 26, + 1870,

-

- - The - Secretary - of - State - has - the - honor - to - submit - herewith, - for - revision +

+ + The + Secretary + of + State + has + the + honor + to + submit + herewith, + for + revision - - by - Congress, - in - conformity - with - the - provisions - of - section - 6 - of - the - act + + by + Congress, + in + conformity + with + the + provisions + of + section + 6 + of + the + act - - approved - 22d - of - June, - 1860, - a - copy - of - “regulations - for - the - consular + + approved + 22d + of + June, + 1860, + a + copy + of + “regulations + for + the + consular - - courts - of - the - United - States - in - Japan,” - decreed - and - issued - by - C. - E. + + courts + of + the + United + States + in + Japan,” + decreed + and + issued + by + C. + BE. - - De - Long, - the - miniater - of - the - United - States - in - that - country, - in - Septem- + + De + Long, + the + minister + of + the + United + States + in + that + country, + in + Septem- - - ber, - 1870; - and - also - the - papers - mentioned - in - the - subjoined - list, - which, + + ber, + 1870; + and + also + the + papers + mentioned + in + the + subjoined + list, + which, - - contain - suggestions - on - the - subject - thereof. + + contain + suggestions + on + the + subject + thereof.

-

- - A - copy - of - Article - XXVI - of - the - consular - regulations - is - also - submitted, +

+ + A + copy + of + Article + XXVI + of + the + consular + regulations + is + also + submitted, - - and - the - Secretary - of - State - respectfully - suggests, - for - the - consideration + + and + the + Secretary + of + State + respectfully + suggests, + for + the + consideration - - of - Congress, - the - propriety - of - limiting - the - power - of - ministers - to - make + + of + Congress, + the + propriety + of + limiting + the + power + of + ministers + to + make - - decrees - and - regulation, - in - the - sense - in - which - it - is - limited - by - paragraph + + decrees + and + regulation, + in + the + sense + in + which + it + is + limited + by + paragraph - - 431 - of - the - article - before - named—that - is, - “to - acts - necessary - to - organize + + 431 + of + the + article + before + named—that + is, + “to + acts + necessary + to + organize - - and - give - efficiency - to - the - courts - created - by - the - act.” + + and + give + efficiency + to + the + courts + created + by + the + act.”

-

- - Respectfully - submitted. - . +

+ + Respectfully + submitted.

-

- - HAMILTON - FISH. +

+ + HAMILTON + FISH.

-
-

- - The - PRESIDENT, +

+

+ + The + PRESIDENT,

-
-

- - List - of - accompanying - papers. +

+

+ + List + of + accompanying + papers.

-
-

- - 1, - Regulations - for - the - consular - courts - of - the - United - States - in - Japan. +

+

+ + 1, + Regulations + for + the + consular + courts + of + the + United + States + in + Japan. - - 2. - Mr. - Fish - to - Mr. - De - Long, - September - 10, - 1870. - . + + 2, + Mr. + Fish + to + Mr. + De + Long, + September + 10, + 1870,

- - + +

-
-

- - +

+

+ + + +

+
+
+

+ +

diff --git a/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/txt.bin b/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/txt.bin index a5ca4032..a450f78e 100644 --- a/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/txt.bin +++ b/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/txt.bin @@ -1,5 +1,5 @@ -41st CONGRESS; | SENATE. -3d Session. } +4ist ConGREss, } SENATE. { Ex. Doc, +3d Session. No. 25. MESSAGE @@ -12,7 +12,7 @@ COMMUNICATING A copy of regulations for the consular courts of the United States in Japan, decreed and issued by the minister of the United States in that country. -January 27, 1871,—Read, referred to the Committee on Commerce, and ordered to be +JANUARY 27, 1871,—Read, referred to the Committee on Commerce, and ordered to be printed. To the Senate and House of Representatives : @@ -26,13 +26,13 @@ U. 8. GRANT. ‘WASHINGTON, January 27, 1871. DEPARTMENT OF STATE, -. Washington, January 26, 1870, +Washington, January 26, 1870, The Secretary of State has the honor to submit herewith, for revision by Congress, in conformity with the provisions of section 6 of the act approved 22d of June, 1860, a copy of “regulations for the consular -courts of the United States in Japan,” decreed and issued by C. E. -De Long, the miniater of the United States in that country, in Septem- +courts of the United States in Japan,” decreed and issued by C. BE. +De Long, the minister of the United States in that country, in Septem- ber, 1870; and also the papers mentioned in the subjoined list, which, contain suggestions on the subject thereof. @@ -43,7 +43,7 @@ decrees and regulation, in the sense in which it is limited by paragraph 431 of the article before named—that is, “to acts necessary to organize and give efficiency to the courts created by the act.” -Respectfully submitted. . +Respectfully submitted. HAMILTON FISH. @@ -52,7 +52,9 @@ The PRESIDENT, List of accompanying papers. 1, Regulations for the consular courts of the United States in Japan. -2. Mr. Fish to Mr. De Long, September 10, 1870. . +2, Mr. Fish to Mr. De Long, September 10, 1870, + + diff --git a/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/jbig2/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 556f0121c8e71ec43bb5f6ccc98907ba6183f104..96c1415ab53c8f6d48704535f6f399229cdc9ddc 100644 GIT binary patch delta 26 hcmcbjcSUc*BT-&MBLj0ILsKJDLtO)l&F@8183BD)2xR~O delta 26 hcmcbjcSUc*BT-%hGb1BIGeb)gV_gID&F@8183BE;2y6fV diff --git a/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index 8bd5f1a7..fc7f0c29 100644 --- a/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -
+

diff --git a/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/lichtenstein/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 06ef4e3c8670c8abbbdc66cc115e7f63dc363f57..2987783d198f8c4f937889ce253f0e5471459ad5 100644 GIT binary patch delta 26 hcmZ1~wp47xW=>v1BLj0ILsKIYb6o?A%?CJB83Af42W9{O delta 26 hcmZ1~wp47xW=>uMGb1BIGeb*bQ(Xh|%?CJB83Afv2WbER diff --git a/tests/cache/manifest.jsonl b/tests/cache/manifest.jsonl index 5e7a374f..f482aaaa 100644 --- a/tests/cache/manifest.jsonl +++ b/tests/cache/manifest.jsonl @@ -1,64 +1,44 @@ -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/francais.pdf", "args": ["-l", "deu", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/2400dpi.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/graph_ocred.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000003_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000003_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000004_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000004_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000002_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000002_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000004_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000004_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000003_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000003_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000002_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000002_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/poster.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]} -{"tesseract_version": "4.1.1", "platform": "Darwin-18.7.0-x86_64-i386-64bit", "python": "3.7.7", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/poster.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/francais.pdf", "args": ["-l", "deu", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "--psm", "7", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/2400dpi.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/aspect.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/ccitt.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/graph_ocred.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/jbig2.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/lichtenstein.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/palette.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/poster.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt", "sourcefile": "resources/skew.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000001_ocr.png", "$TMPDIR/000001_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000002_ocr.png__000002_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000002_ocr.png", "$TMPDIR/000002_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/3small.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000003_ocr.png", "$TMPDIR/000003_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000004_ocr.png", "$TMPDIR/000004_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000005_ocr.png", "$TMPDIR/000005_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_hocr", "hocr", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt", "sourcefile": "resources/multipage.pdf", "args": ["-l", "eng", "-c", "textonly_pdf=1", "$TMPDIR/000006_ocr.png", "$TMPDIR/000006_ocr_tess", "pdf", "txt"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout", "sourcefile": "resources/poster.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000001_rasterize_preview.jpg", "stdout"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000002_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000002_rasterize_preview.jpg", "stdout"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000003_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000003_rasterize_preview.jpg", "stdout"]} +{"tesseract_version": "4.1.1", "platform": "macOS-10.14.6-x86_64-i386-64bit", "python": "3.9.0", "argv_slug": "__-l__osd__--psm__0__000004_rasterize_preview.jpg__stdout", "sourcefile": "resources/cardinal.pdf", "args": ["-l", "osd", "--psm", "0", "$TMPDIR/000004_rasterize_preview.jpg", "stdout"]} \ No newline at end of file diff --git a/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index 99cfda8e..38166827 100644 --- a/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/multipage/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 8f5f36cacbe771655aa1dfdf89c3124e359537ad..66a303254a50005811f54500d345c73b7a249bb7 100644 GIT binary patch delta 26 hcmaE<@ls>McOhOwBLj0ILsKJTb6o?A%`C#Hi~xQ<2dn@9 delta 26 hcmaE<@ls>McOhN_Gb1BIGeb)wb6o@T%`C#Hi~xRx2eAME diff --git a/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/hocr.bin index 8d0a20d2..2c989a38 100644 --- a/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt/pdf.bin b/tests/cache/multipage/__-l__eng__000003_ocr.png__000003_ocr_tess__pdf__txt/pdf.bin index fcabb2c4b9cd85684b32a055aaa416e1fe19143e..82d5f1418bb33cb05dd4f240e0d0970383075efa 100644 GIT binary patch delta 26 hcmX@Ccvx{mAV066k%769p{bFPrLKX+<~aUTMgVCH2LJ#7 delta 26 hcmX@Ccvx{mAV05xnURs9nW3eTp{{}X<~aUTMgVCQ2L1p5 diff --git a/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin index abcbaecb..182a705a 100644 --- a/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt/pdf.bin b/tests/cache/multipage/__-l__eng__000004_ocr.png__000004_ocr_tess__pdf__txt/pdf.bin index 2f7ca9b94c53c3c7f4c15e5a55159d2c4317f58c..a5591ccec9a6ce25ccb58d2c39346ab7cd01d5bb 100644 GIT binary patch delta 26 hcmX>le@cEs1Rt-Vk%769p{bFvp{{|&=2X5^MgVGL2M+)M delta 26 hcmX>le@cEs1Rt+~nURs9nW3eTfv$o1=2X5^MgVG}2NM7Q diff --git a/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt/hocr.bin index 384e7c3c..19e890e9 100644 --- a/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt/pdf.bin b/tests/cache/multipage/__-l__eng__000005_ocr.png__000005_ocr_tess__pdf__txt/pdf.bin index e43434bc93231f0ad62682c58e899536f7599996..99d3c4eb1a7fd73a4761a69b7e63a66572ee0ac6 100644 GIT binary patch delta 26 hcmX@;e9(D=zXGqJk%769p{bFvg|30c<`{)kMgVYL2VMXG delta 26 hcmX@;e9(D=zXGp;nURs9nW3eTg|315<`{)kMgVZ72V(#L diff --git a/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt/hocr.bin index ddb2a438..3e3c4012 100644 --- a/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/pdf.bin b/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/pdf.bin index 2e797b57553a3ed0daed6a9796578fc932e941b9..4a339f17ead4e515779e94c2b738ab6dd7fd3955 100644 GIT binary patch delta 5556 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 C`LgN& delta 5581 zcmV;;6*B6TK&C*j0tgE>p@H zwq6zx1gJWv&LFc3)a)Xody!cWl3~6+vbHHLQj{$h5(JIvRBvxf6h$sBKK4IeF}cOL z^fLK>VYN$KUHSL_`{VULzkUDtn|=NK=W8v0wZ2y47i+@Hr@j37^N-h`{{Fl9J^#1- zxxc?+{?FdMet-V!^}nw_8xx~3A>}_^{&P2GGk)azcTpuW8uBx`t{*_#^!%~e&z$8v*okO z>%y0K#kMZ_d(Kz5#rU?ebF<~!>&IymVR5$mXx!Qx*neYgTSAtNx{yo@7tP|wC=Cp^Y^XWrbr(4R~GIE2fJ^}zVBQa)MvKE zZZpbYmTjlg;ffZ%H!V0e+2o!Uo7bQ{GgMA|=5jqNXjxqLwe6LJT=p8}ezQ0O$tbIl zfqi^CpMPU}@JsUP+(TS8yR-GsL4vL=X=eFmiSZQY?v~YoXpSZL_p*Z*nt$ks4U3N} z>Ij*E?Jxs*SHW%*lHM0*XsP?L>f3`4b_vn-*Ezj~-M-o`W~(f7n;fPY`s-PJ1?K;>OH-$80aBEWq)*VZX) zj+2I#y(`;l*i$(7(jEGtKh8=U!`(<&Ry1|?{HjwGkFPA-NT)@y@b%s;yFX9R#w<4Y zo>K?$21oDJn^<&q72myu(^VeFur7WVYy3E`%i63QQ%ZN-3tP2ocfAVG(cm4~={jdM zi+^Tg?>xRgruRC_cdYMqw0D}U0_QvZ;TQQUzxZiZEt~Oa+hW{0wtruz6r7M^QGm7B zG*EzB_x5;k-s+3Jp`PdC-(i*!JIk{OmD({<8dCZV$zuNl2d|Xk-q6TTpZWGZqv){(sCZ zwu@hN^p?1-RWI-($jndLo&JV{3Rr#Kt%YN9!s1~}5mTr(UqKXn$KYaizbMy>7G?)G zykPhYrYtkB*_HtitV$UafS1AD=Ey4^rU@jtH!mDqy9aCm-hh`B=Iq8K-Uk*v_Uu{GM81>Ex++bts~h3GFh-7U5@Xxp81sg-7qDzjI>AcnIyjHw4e2`2~{Vd_Gm+Iow93| zXEoXQ8Da5GCm22l7VnDmNKENebpLf;i&;Yh>9bV_d=r~{RHM3#ntdY1MSlb$+J(+uzv7%V zADC0G4|!wNM`f*YTl%GVHNP@B4${l+=z65Le(_U_?FM^h_=-?Wa{*OIl4q&j)dLZb zJ(1)0irK2;c>McL;PGV8t^unbhEXNu%^ES9O;(E_EDMr`o)nKPF!|Aj*`~={eR8wK zv<5-iG`azfF6DCsmVcfsXBX822+zo74I=EljIZuBs~pjrOTr_HOV}OPu?Q+n5knjt zQEdDr((nGQXPRTVGp(4kNS0HBL^PaEr=vS_)LmnrDO3;GV$UWLV7;f4B_igtNud6n z8op-n9+{^Qg`D%XM$D;)HIUqSYAtvapSRe2=VV(FAI$$#9TP*i!0 z(yM=l5ER4K1F>kqJSlYirilTlrAH)W#*pCm1s~BdXIHOT->+eMuZd4GESqpWniX+j zNQ5F*SM^>T7k@>`B1);AOc-!7{N?jqWZV(JIkq-V#Qtk@BfUWPQG|LKN(~SCBkYhzRP3X~qEgt|>>ujMQ!mN78?(Tfm%$aP0b$1)a7HRY!0kTG0OxHb zXJAerpH|(psD=U#tNOV6NUPctdF}5)EkW#}AD~A&3Ibw4iKl=^?)(8tMX~41x)fac zR>3i8qJI*sc5rr6P=o=}5L|CJ=)OszAWlyvM|bcnfi4-Ap+N2uoWCAS3)kB*n~*qb zN9-3*l1SNTgQaj5&`cDXh$-8doZiWe9g@Ri=1+RE2gGljED)zBBa&2Bq@ikg!skHz zm*plKWEDifkEC>LmVj<|yUnh-qzTX3OfRSH9e+itRFk3}Ue=GD?kA@R8CyV*(keFx zX~rAtQ?BYe9mPo)(76>1A9;?`_}OnLrqBwic9T&tES+KwdUlr@0Ljn1Z6}gOwe&&+ z`8vVPz2jZIK>~KMGP%NHa0H0CZxQqme<8^(Ob-f*i!p#?5IgT_IwmH2Pa|B@mr>jq zFMo|&t|<5)HP5y0NvN%*nBt2&=@IAyp%Be6NMMuizHleZ}j605Bs(RrjO z2^v{Flfz44V&nS;6aH(FsF>{Rx3gM{U6d1m$hQ{|b+jc(cB@4eIfYP(a>aXz>`aDSu3 zc?e9?^3Q6{aadaU*-TDvy{=0uHIjiC194b2lIPcX$bo3Z6K=0x^9x2^);p?sRjfih zA`emJg0+#CvD6dlZzenheTqk{$1?%dRuRYV-gPF3Q1( zoC9u6kI4lnBx#X^7{ReNYICYG6$&JH`%1MqK>MpZME5YN{T?OPvrAerM}LLyk|HUm z=u4o4w`T$&tc?*6n+%j-KXWd_+%Z-lJu+G|MJixS^O*$*(%osas>vs#niM0B=rbD! zmb4H=aE*7mQsc%&2tR-o${N_0JH?tA+Oaf-*^M7NA9l3lyCyCEWpNPTqYVBTQU$@+ z@|%zI;6AuEw`xhOO`mTGql9oI#v1)dOW5% z6D)2Q)e~BRN{d0<_IA8S=V*ccqRd=u7olNSY9vyrEO%kebxPCcXMaN4j`rho?xHfpr{1sp2Dlf2#( zL_=o7wtAgPipV!$LVkktZp8uO?slKW+KRBO61{!F!AK;BcIDnBH19Oog{uULPz&7E zFZQHFR+CMj!WuS`O`+s2u&T|ahL%2^X!EI`OFgrTkO^bk|ZGiI|~;P-?Dw9omDfDS~eiSX|g3`v079tD`?aG_=i z+NJUtr(Vgh(^U(QfODFNj~dCw9Y?&#H&-G;>(x6;th;-F2@m;PSAROT5|z~2wRa@w zP7(D~XPm~0w|_<3SB3r8O@F0S&&UY??3qs2GMsLWqe`=IGL5qDssdswq1^Xn6O|TN z@+{LB&^$FNuOdAaV*o1RmA4Ss_X_^q;1=GwCgiARI7N$oG6;qmQUctJA;g@i7Y(6* zF0OfkyATU=%UEgdwaG&^yGDe7Zzz5G!c+egwWL6hQw>BOPy zhS+O0YdMiQ%6>00;Us8?t$Lr+Q7hHQ0|)9= z3PS{su^OQP&|QhRueQVI&lFA<0b})~RN57r%L_Q1tBgKsVa0!P!V-Y)-E^u~ixz-@ zs>L3Y7s2Z-1*6_fajHZjXzh!54`c%Vs+%&yqTTo14NT!hO|W#Fqhx}A^SHwte9uCp zfq(K~(b#RVIT%DO*@LkYL8>Hz0Prg}gFiqrlG5(5|3wyR0{d6&@)Y|As0^5eJrJbb zfp-+QsOh>WV-j7}5*N9P4Pm|GQMBVk1PQ4DHYLQ1^T3w0+XxvtA$gS3Lp=qE_x%97evneiZ$@@$aWTqp%#ObmR(1aGkjj(w~7-Nq8c(&gu#t~gigh}0LqjWLEa@g^O-L8zr9u8?>q(?tkBT`w-2(pQIwtr?Z zh!nn$XJt(%_5qkCm`ioQ_9)REcQK8&jf~B)}q)?v=;laOn+#6{{zBdp8hSAZ(uz-Z~r#7#bp149O2y1*YaQLO$d zWpltc-s&Z5iEG6T^g0z;+JRy|8B+Oh{-y{KJ(=~h+Pf@^uq)>J*fci-m49i>IJnKI z)L_-B>G3A;%t3tNlCO9#21K?FDNga<4*>y!kYBmp5lbz#NyOuz3a|HIgsqn*6vrm= z7-GbA;C0K#omv`@O|~IJBnq!;6e;0`S!J1-Xht3{2uI3`W1_cHX@i_P#zYUC_>^j( zB8%AhhcG-B9m(pbNp5*rTz`TQ(I%F}>H}T2S-J{Hm_4f3P=+z*MzizCO25YRT~eQIcL)r}|)M2!zp(vP)vNgeVlfWPhgFT)CMJN9>3c z^X#Y+654fYfoeD0DS;EJS=`C;VwJH-d=6T3TBJ$C-925eTOc4io@}* z!4y@IHNSjPY5(H_Sbu>nrZW==&<4vgq2R=Tw3w)eP+Fe9bsNq7GC*sWWo1hR9RL+l zam&?AQf)xgsBk2$i|3#GZ0FRuH#QFH2J#Qahw%Ea>tQ8G0nGFOp%}BpPlNfK6olfP z=qd!E=>FDz2iCwIkR1MIdIm_6#F!YBtzbh}1XWGa*27#Q+<#kl=k?YJ`STf=+QnT^ zamvU8iP*pqakz=+s}yi{LoqKww|zNkb(LlkCUfZb+*4yc^}8@1vcIXYj|k zWHA`(`8_Z9WPj`?PDv1#mJBZSDHGt5m&b0UED;$_!D3T)v+UFY2D}xlawe8I4wawB znye!X5Vs$-!HHk#Vo93A(TsBWY1W@TiSnPAL!IcYeTi*7O^HI_mb!k)`08=uI0S zPV}ajK)@2;Z00Y{L*^r%t5YDk-lh4EbQEdM#Ba(Bx&g#5UXU5IAVZRA5_XD>T6s1; zB_+npUw`;Vm5RlAJO9nGe*(54KpNId%@o1{Gj~1BzPTPYUBg*^EH|c9kg^#6xu#gE zq!Fjx7AQe%{B)N60hro1f0)iga+HRnjd@q)FjQne?$-Zkf*)8f#``JbI0^cHoy#R7 zq&5HGaEk0DvPskm>mcI(H+Cb}Z)I*|b98cLVUrjhiw!U~GBPnXF*!3gEigBeupU|h bGcc13AF={DHIu*}OA0wKH3}sqMNdWwb$7#W diff --git a/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/txt.bin b/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/txt.bin index 48cfff56..bad62d40 100644 --- a/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/txt.bin +++ b/tests/cache/multipage/__-l__eng__000006_ocr.png__000006_ocr_tess__pdf__txt/txt.bin @@ -45,8 +45,8 @@ when that sufferer was put to death, already marked by the Woodman, Fate, to come down and be sawn into boards, to make a certain mov- able framework with a sack and a knife in it, ter- -tible in history. It is likely enough that in the -tough outhouses of some tillers of the heavy +rible in history. It is likely enough that in the +rough outhouses of some tillers of the heavy lands adjacent to Paris, there were sheltered from the weather that very day, rude carts, bespattered with rustic mire, snuffed about by diff --git a/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index 4c20ae20..fd60c85f 100644 --- a/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+

diff --git a/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/palette/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 80c3c42595d0f3ffd5441a067e6349709385e549..55a7fbdf369c91ee73e672e253fc779464481d13 100644 GIT binary patch delta 26 hcmZqEZPVQ#BFbxMWMFP&Xli6?s%v1eSy42V5dc~71}^{r delta 26 hcmZqEZPVQ#BFbxEW@Kb&W@u?*sB2)pSy42V5dc~g1~32s diff --git a/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 450cbc3c9656e4e9555fb99440195118c17b17a2..33a5425605a9f1bba7d1068a6b412b4fc121aa29 100644 GIT binary patch delta 8278 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 UH+c``^tW&7 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 diff --git a/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/stderr.bin b/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/stderr.bin index 5ae8d1b4..16b617e5 100644 --- a/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/stderr.bin +++ b/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/stderr.bin @@ -1,3 +1 @@ Tesseract Open Source OCR Engine v4.1.1 with Leptonica -Warning: Invalid resolution 10 dpi. Using 70 instead. -Estimating resolution as 328 diff --git a/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/txt.bin b/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/txt.bin index 497dbe9b..b3381922 100644 --- a/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/txt.bin +++ b/tests/cache/poster/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/txt.bin @@ -2,7 +2,6 @@ The LinnSequencer 32 Track MIDI Sequence Recorder The LinnSequencer is a state-of-the-art composition and performance tool for the professional musician. It is - extremely powerful, yet amazingly simple to learn and use. It’s many remarkable features include: © Operation is similar to multi-track tape recorder with PLAY, STOP, RECORD, FAST @@ -54,7 +53,6 @@ Editing To erase a wrong note, simply hold ERASE and press the note to be erased just before it plays in the sequence— when played back, it will be gone. Notes may also be - added, erased, or changed using the SINGLE STEP func- tion. To overdub notes at specific points within a sequence, diff --git a/tests/cache/poster/__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout/stderr.bin b/tests/cache/poster/__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout/stderr.bin index f0de83a8..e69de29b 100644 --- a/tests/cache/poster/__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout/stderr.bin +++ b/tests/cache/poster/__-l__osd__--psm__0__000001_rasterize_preview.jpg__stdout/stderr.bin @@ -1,3 +0,0 @@ -Warning: Invalid resolution 10 dpi. Using 70 instead. -Estimating resolution as 328 -Warning. Invalid resolution 10 dpi. Using 70 instead. diff --git a/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index 208deb0e..43520b39 100644 --- a/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -

+
diff --git a/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/skew/__-l__eng__--psm__7__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 979d31171a64014eab3ac1aaf63f864f4f72288a..31627deb2cd877f56eb8490bd58feb4de2163324 100644 GIT binary patch delta 26 hcmaDS`c8C14JWUmk%769p{bFvv95u|=1$I3MgVfJ2ZI0r delta 26 hcmaDS`c8C14JWUGnURs9nW3erxvqiv=1$I3MgVg-2af;% diff --git a/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin b/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin index f5eed6db..17df1412 100644 --- a/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin +++ b/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_hocr__hocr__txt/hocr.bin @@ -9,7 +9,7 @@ -
+

diff --git a/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/skew/__-l__eng__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin index 11a1c3114fabfddd0850dc781980fc90d00b3409..b143cc9bc98c28128f9f9292443391ccce24ce87 100644 GIT binary patch delta 26 hcmX?*d?0y)uK};2k%769p{bFvnXZAw<|u Date: Wed, 9 Dec 2020 10:15:15 -0800 Subject: [PATCH 3/4] Stricter parameter checking for many public functions --- src/ocrmypdf/_exec/ghostscript.py | 1 + src/ocrmypdf/_exec/tesseract.py | 1 + src/ocrmypdf/_exec/unpaper.py | 5 +++-- src/ocrmypdf/_pipeline.py | 11 ++++++++--- src/ocrmypdf/api.py | 1 + src/ocrmypdf/hocrtransform.py | 11 ++++++----- tests/test_hocrtransform.py | 6 ++++-- tests/test_optimize.py | 2 +- 8 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py index 8f17719a..5c357f1b 100644 --- a/src/ocrmypdf/_exec/ghostscript.py +++ b/src/ocrmypdf/_exec/ghostscript.py @@ -166,6 +166,7 @@ class GhostscriptFollower: def generate_pdfa( pdf_pages, output_file: os.PathLike, + *, compression: str, pdf_version: str = '1.5', pdfa_part: str = '2', diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py index 46e810c7..7f7c06a4 100644 --- a/src/ocrmypdf/_exec/tesseract.py +++ b/src/ocrmypdf/_exec/tesseract.py @@ -221,6 +221,7 @@ def _generate_null_hocr(output_hocr, output_text, image): def generate_hocr( + *, input_file: Path, output_hocr: Path, output_text: Path, diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py index 5798ed55..5226326d 100644 --- a/src/ocrmypdf/_exec/unpaper.py +++ b/src/ocrmypdf/_exec/unpaper.py @@ -69,7 +69,7 @@ def _setup_unpaper_io(tmpdir: Path, input_file: Path) -> Tuple[Path, Path]: def run( - input_file: Path, output_file: Path, dpi: DecFloat, mode_args: List[str] + input_file: Path, output_file: Path, *, dpi: DecFloat, mode_args: List[str] ) -> None: args_unpaper = ['unpaper', '-v', '--dpi', str(round(dpi, 6))] + mode_args @@ -114,6 +114,7 @@ def validate_custom_args(args: str) -> List[str]: def clean( input_file: Path, output_file: Path, + *, dpi: DecFloat, unpaper_args: Optional[List[str]] = None, ): @@ -130,4 +131,4 @@ def clean( ] if not unpaper_args: unpaper_args = default_args - run(input_file, output_file, dpi, unpaper_args) + run(input_file, output_file, dpi=dpi, mode_args=unpaper_args) diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index 6de1f2e9..3a7c7123 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -480,7 +480,12 @@ def preprocess_deskew(input_file: Path, page_context: PageContext): def preprocess_clean(input_file: Path, page_context: PageContext): output_file = page_context.get_path('pp_clean.png') dpi = get_page_square_dpi(page_context.pageinfo, page_context.options) - unpaper.clean(input_file, output_file, dpi.x, page_context.options.unpaper_args) + unpaper.clean( + input_file, + output_file, + dpi=dpi.x, + unpaper_args=page_context.options.unpaper_args, + ) return output_file @@ -616,9 +621,9 @@ def render_hocr_page(hocr: Path, page_context: PageContext): dpi = get_page_square_dpi(page_context.pageinfo, options) debug_mode = options.pdf_renderer == 'hocrdebug' - hocrtransform = HocrTransform(hocr, dpi.x) # square + hocrtransform = HocrTransform(hocr_filename=hocr, dpi=dpi.x) # square hocrtransform.to_pdf( - output_file, + out_filename=output_file, image_filename=None, show_bounding_boxes=False if not debug_mode else True, invisible_text=True if not debug_mode else False, diff --git a/src/ocrmypdf/api.py b/src/ocrmypdf/api.py index 9a37cad6..06f630bb 100644 --- a/src/ocrmypdf/api.py +++ b/src/ocrmypdf/api.py @@ -45,6 +45,7 @@ class Verbosity(IntEnum): def configure_logging( verbosity: Verbosity, + *, progress_bar_friendly: bool = True, manage_root_logger: bool = False, ): diff --git a/src/ocrmypdf/hocrtransform.py b/src/ocrmypdf/hocrtransform.py index ea75f51e..6c64bcff 100755 --- a/src/ocrmypdf/hocrtransform.py +++ b/src/ocrmypdf/hocrtransform.py @@ -77,7 +77,7 @@ class HocrTransform: {'ff': 'ff', 'ffi': 'f‌f‌i', 'ffl': 'f‌f‌l', 'fi': 'fi', 'fl': 'fl'} ) - def __init__(self, hocr_filename: Union[str, Path], dpi: float): + def __init__(self, *, hocr_filename: Union[str, Path], dpi: float): self.dpi = dpi self.hocr = ElementTree.parse(os.fspath(hocr_filename)) @@ -182,6 +182,7 @@ class HocrTransform: def to_pdf( self, + *, out_filename: Path, image_filename: Optional[Path] = None, show_bounding_boxes: bool = False, @@ -433,10 +434,10 @@ if __name__ == "__main__": parser.add_argument('outputfile', help='Path to the PDF file to be generated') args = parser.parse_args() - hocr = HocrTransform(args.hocrfile, args.resolution) + hocr = HocrTransform(hocr_filename=args.hocrfile, dpi=args.resolution) hocr.to_pdf( - args.outputfile, - args.image, - args.boundingboxes, + out_filename=args.outputfile, + image_filename=args.image, + show_bounding_boxes=args.boundingboxes, interword_spaces=args.interword_spaces, ) diff --git a/tests/test_hocrtransform.py b/tests/test_hocrtransform.py index f2f0c660..136c9a49 100644 --- a/tests/test_hocrtransform.py +++ b/tests/test_hocrtransform.py @@ -53,8 +53,10 @@ def test_mono_image(blank_hocr, outdir): im.putpixel((n, n), 1) im.save(outdir / 'mono.tif', format='TIFF') - hocr = hocrtransform.HocrTransform(str(blank_hocr), 300) - hocr.to_pdf(str(outdir / 'mono.pdf'), image_filename=str(outdir / 'mono.tif')) + hocr = hocrtransform.HocrTransform(hocr_filename=str(blank_hocr), dpi=300) + hocr.to_pdf( + out_filename=str(outdir / 'mono.pdf'), image_filename=str(outdir / 'mono.tif') + ) check_pdf(str(outdir / 'mono.pdf')) diff --git a/tests/test_optimize.py b/tests/test_optimize.py index e49e4878..e90b724a 100644 --- a/tests/test_optimize.py +++ b/tests/test_optimize.py @@ -143,7 +143,7 @@ def test_multiple_pngs(resources, outdir): outputstream=inpdf, ) - def mockquant(input_file, output_file, _quality_min, _quality_max): + def mockquant(input_file, output_file, *args): with Image.open(input_file) as im: draw = ImageDraw.Draw(im) draw.rectangle((0, 0, im.width, im.height), fill=128) From 9cba738b485fec161c50768c0eaa8aacc1783995 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 9 Dec 2020 15:07:34 -0800 Subject: [PATCH 4/4] Remove deprecated code --- src/ocrmypdf/optimize.py | 81 +--------------------------------------- 1 file changed, 1 insertion(+), 80 deletions(-) diff --git a/src/ocrmypdf/optimize.py b/src/ocrmypdf/optimize.py index 3fa92355..413c561c 100644 --- a/src/ocrmypdf/optimize.py +++ b/src/ocrmypdf/optimize.py @@ -36,7 +36,7 @@ from ocrmypdf._concurrent import exec_progress_pool from ocrmypdf._exec import jbig2enc, pngquant from ocrmypdf._jobcontext import PdfContext from ocrmypdf.exceptions import OutputFileAccessError -from ocrmypdf.helpers import deprecated, safe_symlink +from ocrmypdf.helpers import safe_symlink log = logging.getLogger(__name__) @@ -64,10 +64,6 @@ def jpg_name(root: Path, xref: Xref) -> Path: return img_name(root, xref, '.jpg') -def tif_name(root: Path, xref: Xref) -> Path: - return img_name(root, xref, '.tif') - - def extract_image_filter( pike: Pdf, root: Path, image: Object, xref: Xref ) -> Optional[Tuple[PdfImage, Tuple[Name, Object]]]: @@ -493,81 +489,6 @@ def transcode_pngs( _transcode_png(pike, filename, xref) -@deprecated -def rewrite_png_as_g4(pike: Pdf, im_obj: Object, compdata) -> None: # pragma: no cover - im_obj.BitsPerComponent = 1 - im_obj.Width = compdata.w - im_obj.Height = compdata.h - - im_obj.write(compdata.read()) - - log.debug(f"PNG to G4 {im_obj.objgen}") - if Name.Predictor in im_obj: - del im_obj.Predictor - if Name.DecodeParms in im_obj: - del im_obj.DecodeParms - im_obj.DecodeParms = Dictionary( - K=-1, BlackIs1=bool(compdata.minisblack), Columns=compdata.w - ) - - im_obj.Filter = Name.CCITTFaxDecode - return - - -@deprecated -def rewrite_png(pike: Pdf, im_obj: Object, compdata) -> None: # pragma: no cover - # When a PNG is inserted into a PDF, we more or less copy the IDAT section from - # the PDF and transfer the rest of the PNG headers to PDF image metadata. - # One thing we have to do is tell the PDF reader whether a predictor was used - # on the image before Flate encoding. (Typically one is.) - # According to Leptonica source, PDF readers don't actually need us - # to specify the correct predictor, they just need a value of either: - # 1 - no predictor - # 10-14 - there is a predictor - # Leptonica's compdata->predictor only tells TRUE or FALSE - # 10-14 means the actual predictor is specified in the data, so for any - # number >= 10 the PDF reader will use whatever the PNG data specifies. - # In practice Leptonica should use Paeth, 14, but 15 seems to be the - # designated value for "optimal". So we will use 15. - # See: - # - PDF RM 7.4.4.4 Table 10 - # - https://github.com/DanBloomberg/leptonica/blob/master/src/pdfio2.c#L757 - predictor = 15 if compdata.predictor > 0 else 1 - dparms = Dictionary(Predictor=predictor) - if predictor > 1: - dparms.BitsPerComponent = compdata.bps # Yes, this is redundant - dparms.Colors = compdata.spp - dparms.Columns = compdata.w - - im_obj.BitsPerComponent = compdata.bps - im_obj.Width = compdata.w - im_obj.Height = compdata.h - - log.debug( - f"PNG {im_obj.objgen}: palette={compdata.ncolors} spp={compdata.spp} bps={compdata.bps}" - ) - if compdata.ncolors > 0: - # .ncolors is the number of colors in the palette, not the number of - # colors used in a true color image. The palette string is always - # given as RGB tuples even when the image is grayscale; see - # https://github.com/DanBloomberg/leptonica/blob/master/src/colormap.c#L2067 - palette_pdf_string = compdata.get_palette_pdf_string() - palette_data = pikepdf.Object.parse(palette_pdf_string) - palette_stream = pikepdf.Stream(pike, bytes(palette_data)) - palette = [Name.Indexed, Name.DeviceRGB, compdata.ncolors - 1, palette_stream] - cs = palette - else: - # ncolors == 0 means we are using a colorspace without a palette - if compdata.spp == 1: - cs = Name.DeviceGray - elif compdata.spp == 4: - cs = Name.DeviceCMYK - else: # spp == 3 - cs = Name.DeviceRGB - im_obj.ColorSpace = cs - im_obj.write(compdata.read(), filter=Name.FlateDecode, decode_parms=dparms) - - def optimize(input_file: Path, output_file: Path, context, save_settings) -> None: options = context.options if options.optimize == 0: