You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Word 6.0 and Word 95 .doc files are read. They failed with extraction_error_kind=UnsupportedFormat; the Word
reader now extracts their text and structure (headings from paragraph styles, tables, bold/italic/underline) like a
Word 97-2003 file. Their notes, headers and pictures are not read yet.
Changed
Word: a body paragraph that starts like a list item, a heading or a quote stays a paragraph. A paragraph
Word does not number or style that begins * , - , 1. , # or > was written as is and rendered as a list
item, a heading or a block quote; the marker is now escaped (\*, 1\., \#, \>). A < that could open a tag
(<angle>, Vec<String>) and a & that starts a character reference are escaped too. Extracted text changes
wherever body text holds such characters. A link to a place in the same document (a table-of-contents entry, a
bookmark link in a .doc) is written as its text, not as a link to an anchor the output does not have.
PowerPoint: a line break inside a paragraph ends its line, and a field (slide number, date) keeps its text. The
words either side of a break used to run together and a field was dropped; table cells keep underline and
strikethrough.
PDF: the parser moves from Unpdf 0.43.0 to 0.44.0, and extracted text changes for datasheets, papers and forms with
tables, formulas or titles over columns. Measured on 24 PDFs: 12 change, none fails. What changes:
The 0.62.0 regressions are gone: a register map's end labels bit 7 … bit 0 stay in their own columns, row labels
of a rotated table stay apart (AF11 … AF15, values back in their rows), and a table caption keeps its subscript
(Table 59. SCL frequency (fPCLK1 = 50 MHz, …) whole).
A superscript or subscript stays on its line (VDD, fADC, footnote marks), a title over columns no longer pulls
their first rows into it, and a byline centred over columns is read before them. Wrapped lines of a table cell stay
in their row, and several Korean two-column tables that came out as loose text are tables.
Text is escaped where Markdown would read it as syntax (<EOS> → \<EOS>, a | inside a cell), so table column
counts are consistent and the HTML fallback for uneven tables is used less.
Known regressions, reported to the parser: a figure caption at the top of a page can lose its title to the line after
the page header (FIGURE 1-3: … I2C BUS TIMING DATA), and a numbered title directly above a table can become its
first header row (3 of 53 in one document). A value spanning Min/Typ/Max columns stays in its first position in
Markdown (the structured TableData keeps the span).
Documentation
docs/QUALITY-BENCHMARKS.md names the public benchmarks for conversion quality: olmOCR-Bench and READoc for
native PDFs, OmniDocBench tables with merged cells (TEDS), and the formats no benchmark covers.
Fixed
A short all-caps line is no longer turned into a title-cased heading in text that already has headings. Refine
promoted any all-caps line of up to 100 characters to ## and rewrote it in title case, so a datasheet's pin and
register labels (VSS, SDA, START) became headings (## Vss, ## Start) and the label text itself changed. Text
that already carries Markdown headings (from the parser's font sizes or styles) keeps its labels as they are; plain text
without any heading still gets its all-caps lines as headings, now in their own case (## USB CONFIGURATION, not ## Usb Configuration). Extracted text changes: on two datasheets 140 and 115 invented headings are gone, and a
heading under a removed one moves up a level.
The legacy processor no longer deletes a short all-caps line that occurs once. Its header/footer filter removed
every all-caps line under 20 characters as a «repeated header» without checking that it repeated — a WARNING, an
acronym on its own line, or a heading went missing (a two-page document whose pages read PAGE ONE / PAGE TWO came out
with no chunks). Such a line is now removed only when it occurs three times or more.
Breaking — A PDF cut short is reported as damaged, not blank. A file that lost its page tree or its content streams yielded no
text and was classified extraction_failure_reason = blank_page with «every page is blank» as the first warning — a
consumer that maps the reason told the user the document is empty. When no text was read and pages are missing or the
cross-reference table had to be rebuilt, the reason is now document_damaged and its warning («the file is damaged …
not known to be blank») comes first. An intact document without content is still blank_page. Migration: a consumer that maps extraction_failure_reason handles document_damaged (a damaged file, worth re-obtaining) apart from blank_page.