Распознать текст и вывести его в файл ворд
Created on: March 24, 2026
Answered using GPT-5.4 Thinking by Chat01
Created on: March 24, 2026
Answered using GPT-5.4 Thinking by Chat01
Распознать текст и вывести его в файл ворд
pythonfrom PIL import Image imgs = [Image.open('/mnt/data/IMG_0960.jpeg'), Image.open('/mnt/data/IMG_0961.jpeg'), Image.open('/mnt/data/IMG_0962.jpeg')] [(im.size) for im in imgs] [(720, 960), (720, 960), (720, 960)]
pythonfrom PIL import Image for i,im in enumerate(imgs): big=im.resize((1440,1920)) path=f'/mnt/data/page{i+1}_big.png' big.save(path) print(path)
pythonfrom PIL import Image for i,im in enumerate(imgs): big=im.resize((1440,1920)) path=f'/mnt/data/page{i+1}_big.png' big.save(path) print(path) <<ImageDisplayed>>
pythonfrom PIL import Image im = Image.open('/mnt/data/IMG_0962.jpeg') # first page in chat maybe # crops crops = { 'p1_header': (180,120,580,450), 'p1_body': (180,420,620,900), } for name, box in crops.items(): c=im.crop(box).resize(( (box[2]-box[0])*3, (box[3]-box[1])*3 )) path=f'/mnt/data/{name}.png' c.save(path) print(path, c.size)
pythonfrom PIL import Image im = Image.open('/mnt/data/IMG_0962.jpeg') # first page in chat maybe # crops crops = { 'p1_header': (180,120,580,450), 'p1_body': (180,420,620,900), } for name, box in crops.items(): c=im.crop(box).resize(( (box[2]-box[0])*3, (box[3]-box[1])*3 )) path=f'/mnt/data/{name}.png' c.save(path) print(path, c.size) <<ImageDisplayed>>
pythonfrom PIL import Image im = Image.open('/mnt/data/IMG_0962.jpeg') # first page in chat maybe # crops crops = { 'p1_header': (180,120,580,450), 'p1_body': (180,420,620,900), } for name, box in crops.items(): c=im.crop(box).resize(( (box[2]-box[0])*3, (box[3]-box[1])*3 )) path=f'/mnt/data/{name}.png' c.save(path) print(path, c.size) <<ImageDisplayed>> <<ImageDisplayed>>
pythonfrom PIL import Image im2 = Image.open('/mnt/data/IMG_0961.jpeg') crops = { 'p2_top': (150,170,630,650), 'p2_bottom': (160,600,650,940), } for name, box in crops.items(): c=im2.crop(box).resize(((box[2]-box[0])*3, (box[3]-box[1])*3)) path=f'/mnt/data/{name}.png' c.save(path) print(path)
pythonfrom PIL import Image im2 = Image.open('/mnt/data/IMG_0961.jpeg') crops = { 'p2_top': (150,170,630,650), 'p2_bottom': (160,600,650,940), } for name, box in crops.items(): c=im2.crop(box).resize(((box[2]-box[0])*3, (box[3]-box[1])*3)) path=f'/mnt/data/{name}.png' c.save(path) print(path) <<ImageDisplayed>>
pythonfrom PIL import Image im2 = Image.open('/mnt/data/IMG_0961.jpeg') crops = { 'p2_top': (150,170,630,650), 'p2_bottom': (160,600,650,940), } for name, box in crops.items(): c=im2.crop(box).resize(((box[2]-box[0])*3, (box[3]-box[1])*3)) path=f'/mnt/data/{name}.png' c.save(path) print(path) <<ImageDisplayed>> <<ImageDisplayed>>
pythonim3 = Image.open('/mnt/data/IMG_0960.jpeg') crops = { 'p3_mid': (150,240,640,650), } for name, box in crops.items(): c=im3.crop(box).resize(((box[2]-box[0])*3, (box[3]-box[1])*3)) path=f'/mnt/data/{name}.png' c.save(path) print(path)
pythonim3 = Image.open('/mnt/data/IMG_0960.jpeg') crops = { 'p3_mid': (150,240,640,650), } for name, box in crops.items(): c=im3.crop(box).resize(((box[2]-box[0])*3, (box[3]-box[1])*3)) path=f'/mnt/data/{name}.png' c.save(path) print(path) <<ImageDisplayed>>
pythonc=im3.crop((120,160,650,400)).resize((1590,720)) path='/mnt/data/p3_top.png' c.save(path) print(path)
pythonc=im3.crop((120,160,650,400)).resize((1590,720)) path='/mnt/data/p3_top.png' c.save(path) print(path) <<ImageDisplayed>>
pythonfrom docx import Document from docx.shared import Pt, Cm, Inches from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_BREAK from docx.oxml import OxmlElement from docx.oxml.ns import qn doc = Document() # margins section = doc.sections[0] section.top_margin = Cm(2) section.bottom_margin = Cm(2) section.left_margin = Cm(2.5) section.right_margin = Cm(2) # default font style = doc.styles['Normal'] style.font.name = 'Times New Roman' style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') style.font.size = Pt(12) def set_cell_borderless(cell): tc = cell._tc tcPr = tc.get_or_add_tcPr() tcBorders = tcPr.first_child_found_in("w:tcBorders") if tcBorders is None: tcBorders = OxmlElement('w:tcBorders') tcPr.append(tcBorders) for edge in ('top', 'left', 'bottom', 'right', 'insideH', 'insideV'): tag = 'w:{}'.format(edge) element = tcBorders.find(qn(tag)) if element is None: element = OxmlElement(tag) tcBorders.append(element) element.set(qn('w:val'), 'nil') # first page header as 2-col table table = doc.add_table(rows=1, cols=2) table.autofit = False table.columns[0].width = Cm(10.5) table.columns[1].width = Cm(6.0) for row in table.rows: row.cells[0].width = Cm(10.5) row.cells[1].width = Cm(6.0) for cell in table.row_cells(0): set_cell_borderless(cell) left = table.cell(0,0).paragraphs[0] left.alignment = WD_ALIGN_PARAGRAPH.CENTER left_text = [ "ГУ МВД России по Ставропольскому краю", "Отдел Министерства внутренних дел", "Российской Федерации", "по городу Ессентуки", "(Отдел МВД России по г. Ессентуки)", "", "ул. Чкалова, д. 3, г. Ессентуки, Ставропольский край, 357600", "тел. (87934) 3-72-30, факс (87934) 6-46-27", "", "24.02.26 № 9/66", "на № ____________ от ____________", ] for i, line in enumerate(left_text): p = left if i == 0 else table.cell(0,0).add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(line) run.font.name = 'Times New Roman' run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') if i in [1,2,3]: run.bold = True right_lines = [ "Директору МБОУ СОШ №9 г. Ессентуки", "Кудиновой Е.Д." ] for i, line in enumerate(right_lines): p = table.cell(0,1).paragraphs[0] if i==0 else table.cell(0,1).add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.LEFT run = p.add_run(line) run.font.name = 'Times New Roman' run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER for line in ["О направлении информации по", "факту", "ДТП с участием", "несовершеннолетнего пешехода"]: r = p.add_run(line + "\n") r.font.name = 'Times New Roman' r._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER r = p.add_run("Уважаемая Елена Давыдовна!") r.font.name = 'Times New Roman' r._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') body_paras_page1 = [ "23.02.2026 в 08 часов 55 минут в г. Ессентуки по адресу: ул. Ермолова д. 139, водитель, 1969 года рождения (56 лет), управляя транспортным средством «Лада 219010» нарушил п. 14.1 ПДД РФ «Приближаясь к нерегулируемому пешеходному переходу не уступил дорогу, пешеходу переходящему, проезжую часть по нерегулируемому пешеходному переходу» и допустил наезд на несовершеннолетнего пешехода, который переходил проезжую часть дороги, слева направо по ходу движения транспортного средства.", ] for txt in body_paras_page1: p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY p.paragraph_format.first_line_indent = Cm(1.25) p.add_run(txt) p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER r = p.add_run("Проверкой установлено следующее:") r.bold = True page1_rest = [ "Несовершеннолетний пешеход - Заварзина Дина Дмитриевна 30.09.2009 года рождения (16 лет), зарегистрирована и проживает по адресу: Ставропольский край, г. Ессентуки, ул. Ермолова, д. 106А. Учащаяся 11 «А» класса МБОУ СОШ № 9 г. Ессентуки. Доставлена в ЦГБ г. Ессентуки, где установлен диагноз: «СГМ», была госпитализирована в нейрохирургическое отделение.", "Место наезда на несовершеннолетнего пешехода - город Ессентуки, ул. Ермолова, № 139. На момент ДТП несовершеннолетний пешеход Заварзина Д.Д., 30.09.2009 года рождения (16 лет), переходила проезжую часть дороги по нерегулируемому пешеходному переходу слева направо по ходу движения транспортного средства, без сопровождения взрослых, направляясь из МБОУ СОШ № 9. Маршрут движения постоянный, входит в безопасный маршрут" ] for txt in page1_rest: p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY p.paragraph_format.first_line_indent = Cm(1.25) p.add_run(txt) doc.add_page_break() page2_paras = [ "«Дом-Школа-Дом». Расстояние от дома до места совершения ДТП – примерно 300 м.", "Маршрут движения дислокацией предусмотрен, в момент ДТП экипаж в составе: инспектора ДПС отдела Госавтоинспекции Отдела МВД России по г. Ессентуки старшего лейтенанта полиции Белова К.С. и инспектора ДПС отдела Госавтоинспекции Отдела МВД России по г. Ессентуки младшего лейтенанта полиции Айвазова А.Б. находился на маршруте патрулирования № 16 на ул. Первомайская, обеспечивал БДД на обслуживаемом участке, на расстоянии 1,8 км от места ДТП.", "Цветовая гамма одежды (комбинированная) - ботинки серого цвета, спортивный костюм серого цвета, пуховик черного цвета, светоотражающие элементы на одежде отсутствовали.", "Данное обстоятельство вызывает серьезную обеспокоенность в вопросе детского дорожно-транспортного травматизма на территории нашего города, со стороны Госавтоинспекции ежедневно проводятся рейдовые и профилактические мероприятия, направляется информация в СМИ, проводятся беседы в дошкольных учреждениях, инициативные акции и мероприятия.", "В целях снижения детского дорожно-транспортного травматизма прошу Вас провести мероприятия и предоставить в адрес Отдела Госавтоинспекции Отдела МВД России по г. Ессентуки следующую информацию:", ] for txt in page2_paras: p=doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY p.paragraph_format.first_line_indent = Cm(1.25) p.add_run(txt) numbered = [ "1. Полное наименование ОО, приказы по ОО и т.д., Ф.И.О. и должность лица, утвердившего документы; Ф.И.О., должность педагога, ответственного за БДД (№ приказа о закреплении, кем подписан), наличие и название программы, по которой ведется обучение учащихся основам БДД;", "2. Имеется ли в образовательном учреждении оборудованный кабинет по БДД (и организация в нем занятий); уголка БДД (где расположен, актуальность сменной информации в уголке, фото уголка);", "3. Какие мероприятия по БДД, были проведены с учащимися и родителями в классе, в котором обучается несовершеннолетний, с начала учебного года (конкурсы, викторины, соревнования и т.д.), а также какие мероприятия были проведены в школе с начала учебного года по настоящее время;", "4. Информацию о количестве проведенных родительских собраний, на котором был рассмотрен вопрос профилактики ДДТТ, присутствовали ли на них родители пострадавшего несовершеннолетнего, сколько информаций по соблюдению ПДД несовершеннолетними пешеходами направлено в родительские группы (скриншоты);", "5. Информация о составе семьи несовершеннолетнего;", "6. Характеристику несовершеннолетнего;", "Также прошу предоставить копии проведения инструктажей, тестирования по ПДД несовершеннолетнего пешехода Заварзиной Д.Д. с результатами, и другой адресной работы по ПДД с конкретным пострадавшим, копии протоколов родительских собраний в его классе, указать присутствовали ли родители несовершеннолетнего, акт" ] for txt in numbered: p=doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY if txt.startswith(("1.","2.","3.","4.","5.","6.")): p.paragraph_format.left_indent = Cm(0.75) p.paragraph_format.first_line_indent = Cm(-0.75) else: p.paragraph_format.first_line_indent = Cm(1.25) p.add_run(txt) doc.add_page_break() page3_paras = [ "педагогического расследования, аналитическая справка о проделанной работе в МБОУ СОШ №9 и непосредственно в классе, команда ЮИД, приказ, состав команды, план работы и пр. (период с начала учебного года и по настоящее время).", "7. Довести факт ДТП до педагогического состава МБОУ СОШ № 9, доведение информации до родителей (на родительских собраниях), при индивидуальных беседах, в классных родительских группах, социальных сетях типа «WhatsApp», «МАХ» и т.д.", "8. в марте 2026 года провести инициативные профилактические мероприятия, по предупреждению ДТП с участием детей – пешеходов, самокатов, велосипедистов с привлечением отрядов ЮИД, родительской общественности, родительского патруля и т. д.", "О проведенных мероприятиях прошу Вас предоставить нарочно и в формате «Word» все необходимые документы до 05.03.2026г в Отдел Госавтоинспекции Отдела МВД России по г. Ессентуки по адресу: г. Ессентуки ул. Буачидзе 23." ] for txt in page3_paras: p=doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY if txt.startswith(("7.","8.")): p.paragraph_format.left_indent = Cm(0.75) p.paragraph_format.first_line_indent = Cm(-0.75) else: p.paragraph_format.first_line_indent = Cm(1.25) run = p.add_run(txt) if txt.startswith("8."): # italicize full paragraph for r in p.runs: r.italic = False # reset # simpler: make all italic? no, only initial phrase? skip. pass # signature block t = doc.add_table(rows=1, cols=2) t.autofit = False t.columns[0].width = Cm(9) t.columns[1].width = Cm(7) for row in t.rows: row.cells[0].width = Cm(9) row.cells[1].width = Cm(7) for cell in t.row_cells(0): set_cell_borderless(cell) p = t.cell(0,0).paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.LEFT p.add_run("Начальник отдела Госавтоинспекции\nОтдела МВД России\nпо г. Ессентуки") p = t.cell(0,1).paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.RIGHT p.add_run("И.В. Меркульян") # paragraph spacing for p in doc.paragraphs: p.paragraph_format.space_after = Pt(6) p.paragraph_format.line_spacing = 1.15 for tbl in doc.tables: for row in tbl.rows: for cell in row.cells: for p in cell.paragraphs: p.paragraph_format.space_after = Pt(3) p.paragraph_format.line_spacing = 1.0 path='/mnt/data/raspoznannyj_tekst.docx' doc.save(path) path '/mnt/data/raspoznannyj_tekst.docx'
pythonfrom docx import Document from docx.shared import Pt, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml import OxmlElement from docx.oxml.ns import qn doc = Document() section = doc.sections[0] section.top_margin = Cm(1.6) section.bottom_margin = Cm(1.6) section.left_margin = Cm(2.2) section.right_margin = Cm(1.8) style = doc.styles['Normal'] style.font.name = 'Times New Roman' style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman') style.font.size = Pt(11.5) def set_cell_borderless(cell): tcPr = cell._tc.get_or_add_tcPr() tcBorders = tcPr.first_child_found_in("w:tcBorders") '/mnt/data/raspoznannyj_tekst_v2.docx'
Готово. Файл Word: raspoznannyj_tekst_v2.docx
Печатный текст я перенёс в документ; рукописные пометки и подпись отдельно не расписывал.