mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/ocr.git
synced 2025-07-02 06:00:34 +00:00
Cleanup and make use of globbing for input files for binarization and ocr
This commit is contained in:
55
hocrtotei
55
hocrtotei
@ -5,45 +5,50 @@
|
||||
|
||||
from xml.sax.saxutils import escape
|
||||
from argparse import ArgumentParser
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
parser = ArgumentParser(description='Merges hOCR files into a TEI file.')
|
||||
parser.add_argument('i', metavar='hOCR-sourcefile', nargs='+')
|
||||
parser.add_argument('o', metavar='TEI-destfile',)
|
||||
parser.add_argument('i', metavar='hOCR-sourcefile')
|
||||
parser.add_argument('o', metavar='TEI-destfile')
|
||||
args = parser.parse_args()
|
||||
|
||||
output_file = open(args.o, 'w')
|
||||
output_file.write(
|
||||
'<?xml version="1.0" encoding="UTF-8"?>\n'
|
||||
+ '<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:id="dtabf">\n'
|
||||
+ ' <teiHeader>\n'
|
||||
+ ' <fileDesc>\n'
|
||||
+ ' <titleStmt/>\n'
|
||||
+ ' <publicationStmt/>\n'
|
||||
+ ' <sourceDesc/>\n'
|
||||
+ ' </fileDesc>\n'
|
||||
+ ' <encodingDesc/>\n'
|
||||
+ ' <profileDesc/>\n'
|
||||
+ ' </teiHeader>\n'
|
||||
+ ' <text>\n'
|
||||
+ ' <body>\n'
|
||||
+ '<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:id="dtabf">\n'
|
||||
+ ' <teiHeader>\n'
|
||||
+ ' <fileDesc>\n'
|
||||
+ ' <titleStmt/>\n'
|
||||
+ ' <publicationStmt/>\n'
|
||||
+ ' <sourceDesc/>\n'
|
||||
+ ' </fileDesc>\n'
|
||||
+ ' <encodingDesc/>\n'
|
||||
+ ' <profileDesc/>\n'
|
||||
+ ' </teiHeader>\n'
|
||||
+ ' <text>\n'
|
||||
+ ' <body>\n'
|
||||
)
|
||||
for index, input_file in enumerate(args.i):
|
||||
tree = ET.parse(input_file)
|
||||
output_file.write(' <pb n="%i"/>\n' % (index + 1))
|
||||
for para in tree.findall('.//*[@class="ocr_par"]'):
|
||||
tree = ET.parse(args.i)
|
||||
for page in tree.findall('.//*[@class="ocr_page"]'):
|
||||
page_properties = page.attrib.get('title')
|
||||
facsimile = re.search(r'image \"(.*?)\"', page_properties).group(1)
|
||||
page_number = re.search(r'ppageno (\d+)', page_properties).group(1)
|
||||
output_file.write(' <pb facs="%s" n="%s"/>\n' % (facsimile, page_number)) # noqa
|
||||
for para in page.findall('.//*[@class="ocr_par"]'):
|
||||
output_file.write(' <p>\n')
|
||||
for line in para.findall('.//*[@class="ocr_line"]'):
|
||||
first_word_in_line = True
|
||||
output_file.write(' <lb/>')
|
||||
indent = ''
|
||||
for word in line.findall('.//*[@class="ocrx_word"]'):
|
||||
if word.text is not None:
|
||||
output_file.write((' ' if first_word_in_line else ' ') + escape(word.text.strip()))
|
||||
first_word_in_line = False
|
||||
if not first_word_in_line:
|
||||
output_file.write('<lb/>\n')
|
||||
output_file.write(indent + escape(word.text.strip()))
|
||||
indent = ' '
|
||||
output_file.write('\n')
|
||||
output_file.write(' </p>\n')
|
||||
output_file.write(
|
||||
' </body>\n'
|
||||
+ ' </text>\n'
|
||||
+ '</TEI>')
|
||||
+ ' </text>\n'
|
||||
+ '</TEI>'
|
||||
)
|
||||
output_file.close()
|
||||
|
Reference in New Issue
Block a user