Add PDF OCR pipeline and project indexes for Кронштадтский and 123
This commit is contained in:
commit
b1b00656f2
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
*.pdf
|
||||||
|
output/*.png
|
||||||
|
output_123/*.png
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
119
build_index.py
Normal file
119
build_index.py
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Сборка базы (индекса) проекта из full_ocr_results.json в заданной папке.
|
||||||
|
Использование:
|
||||||
|
python build_index.py <input_folder>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def build_index_for_folder(folder: Path):
|
||||||
|
ocr_path = folder / "full_ocr_results.json"
|
||||||
|
if not ocr_path.exists():
|
||||||
|
print(f"[ERR] Не найден {ocr_path}")
|
||||||
|
return
|
||||||
|
|
||||||
|
data = json.loads(ocr_path.read_text(encoding="utf-8"))
|
||||||
|
pages = data["pages"]
|
||||||
|
index_path = folder / "project_index.json"
|
||||||
|
|
||||||
|
# --- метаданные из текстового слоя первых страниц ---
|
||||||
|
meta = {}
|
||||||
|
front_text = "\n".join(p["pdf_text_layer"] for p in pages[:3])
|
||||||
|
m = re.search(r'(180-[^\s\n]+)', front_text)
|
||||||
|
if m: meta["document_number"] = m.group(1)
|
||||||
|
m = re.search(r'Заказчик[:\s]+([^\n]+)', front_text)
|
||||||
|
if m: meta["customer"] = m.group(1).strip()
|
||||||
|
m = re.search(r'(\d{2}\.\d{2}\.\d{2,4})', front_text)
|
||||||
|
if m: meta["date"] = m.group(1)
|
||||||
|
m = re.search(r'Главный инженер проекта\s*\n?\s*([^\n()]+)', front_text)
|
||||||
|
if m: meta["chief_engineer"] = m.group(1).strip()
|
||||||
|
|
||||||
|
# --- оглавление ---
|
||||||
|
toc = []
|
||||||
|
toc_text = "\n".join(p["pdf_text_layer"] for p in pages[2:6])
|
||||||
|
for line in toc_text.splitlines():
|
||||||
|
line = line.strip()
|
||||||
|
m = re.search(r'^(.+?)\s*\.\.\.\.?\s*(\d+)\s*$', line)
|
||||||
|
if m:
|
||||||
|
title = m.group(1).strip()
|
||||||
|
page = int(m.group(2))
|
||||||
|
if len(title) > 5 and not title.startswith("180-"):
|
||||||
|
toc.append({"title": title, "page": page})
|
||||||
|
|
||||||
|
# --- индекс страниц ---
|
||||||
|
page_index = []
|
||||||
|
for p in pages:
|
||||||
|
ocr_text = "\n".join(l["text"] for l in p["ocr_lines"])
|
||||||
|
preview = ocr_text[:400] + "..." if len(ocr_text) > 400 else ocr_text
|
||||||
|
page_index.append({
|
||||||
|
"page_number": p["page_number"],
|
||||||
|
"image": p["image"],
|
||||||
|
"line_count": p["ocr_line_count"],
|
||||||
|
"pdf_text_preview": p["pdf_text_layer"][:300] if p["pdf_text_layer"] else "",
|
||||||
|
"ocr_text_preview": preview,
|
||||||
|
})
|
||||||
|
|
||||||
|
# --- сущности ---
|
||||||
|
floors, axes, dims, rooms, dates, docs = set(), set(), set(), set(), set(), set()
|
||||||
|
floor_re = re.compile(r"(\d+)[-\s]?й\s*этаж", re.I)
|
||||||
|
axis_re = re.compile(r"\b([А-Я])\b")
|
||||||
|
num_axis_re = re.compile(r"\b(\d{1,2})\b")
|
||||||
|
dim_re = re.compile(r"\b(\d{3,5})\b")
|
||||||
|
room_re = re.compile(r"([Кк]вартира|[Кк]в\.?\s*\d+|[Пп]омещение\s*\d+)", re.I)
|
||||||
|
date_re = re.compile(r"\b(\d{2}\.\d{2}\.\d{2,4})\b")
|
||||||
|
doc_re = re.compile(r"(180-[^\s\n]+)")
|
||||||
|
|
||||||
|
for p in pages:
|
||||||
|
for entry in p["ocr_lines"]:
|
||||||
|
t = entry["text"]
|
||||||
|
for m in floor_re.finditer(t): floors.add(m.group(0))
|
||||||
|
for m in axis_re.finditer(t): axes.add(m.group(1))
|
||||||
|
for m in num_axis_re.finditer(t):
|
||||||
|
v = m.group(1)
|
||||||
|
if v.isdigit() and 1 <= int(v) <= 50: axes.add(v)
|
||||||
|
for m in dim_re.finditer(t):
|
||||||
|
v = m.group(1)
|
||||||
|
if 100 <= int(v) <= 20000: dims.add(v)
|
||||||
|
for m in room_re.finditer(t): rooms.add(m.group(0))
|
||||||
|
for m in date_re.finditer(t): dates.add(m.group(1))
|
||||||
|
for m in doc_re.finditer(t): docs.add(m.group(1))
|
||||||
|
|
||||||
|
entities = {
|
||||||
|
"floors": sorted(floors), "axes": sorted(axes),
|
||||||
|
"dimensions": sorted(dims), "rooms": sorted(rooms),
|
||||||
|
"dates": sorted(dates), "document_refs": sorted(docs),
|
||||||
|
}
|
||||||
|
|
||||||
|
index = {
|
||||||
|
"project": {
|
||||||
|
"document_number": meta.get("document_number"),
|
||||||
|
"customer": meta.get("customer"),
|
||||||
|
"date": meta.get("date"),
|
||||||
|
"chief_engineer": meta.get("chief_engineer"),
|
||||||
|
"total_pdf_pages": len(pages),
|
||||||
|
"ocr_processed_pages": len(pages),
|
||||||
|
},
|
||||||
|
"table_of_contents": toc,
|
||||||
|
"pages": page_index,
|
||||||
|
"entities": entities,
|
||||||
|
"sources": {"ocr_json": str(ocr_path)}
|
||||||
|
}
|
||||||
|
|
||||||
|
with open(index_path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(index, f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
print(f"[build_index] Saved -> {index_path}")
|
||||||
|
print(f" Pages: {len(page_index)}, TOC: {len(toc)}")
|
||||||
|
print(f" Entities: { {k: len(v) for k,v in entities.items()} }")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
folder = Path(sys.argv[1]) if len(sys.argv) > 1 else Path(r"D:\TEST docs\output_123")
|
||||||
|
build_index_for_folder(folder)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
38686
output/full_ocr_results.json
Normal file
38686
output/full_ocr_results.json
Normal file
File diff suppressed because it is too large
Load Diff
9020
output/ocr_results.json
Normal file
9020
output/ocr_results.json
Normal file
File diff suppressed because it is too large
Load Diff
23
output/parsed_entities.json
Normal file
23
output/parsed_entities.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"floors": [],
|
||||||
|
"axes": [
|
||||||
|
"04",
|
||||||
|
"1",
|
||||||
|
"10",
|
||||||
|
"16",
|
||||||
|
"18",
|
||||||
|
"2",
|
||||||
|
"24",
|
||||||
|
"26",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"42",
|
||||||
|
"6",
|
||||||
|
"9"
|
||||||
|
],
|
||||||
|
"dimensions": [
|
||||||
|
"180",
|
||||||
|
"2026"
|
||||||
|
],
|
||||||
|
"rooms": []
|
||||||
|
}
|
||||||
510
output/project_index.json
Normal file
510
output/project_index.json
Normal file
@ -0,0 +1,510 @@
|
|||||||
|
{
|
||||||
|
"project": {
|
||||||
|
"name": "Кронштадтский 16-18 НК1 ОСК",
|
||||||
|
"address": "г. Москва, САО, Головинский район, Кронштадтский бульв., 16-18",
|
||||||
|
"document_number": "180-24/МСК-ОСК",
|
||||||
|
"customer": "ООО «МСК Проект»",
|
||||||
|
"stage": null,
|
||||||
|
"date": "10.04.26",
|
||||||
|
"chief_engineer": "Н.Р. Хисмятуллин",
|
||||||
|
"author": null,
|
||||||
|
"total_pdf_pages": 42,
|
||||||
|
"pages_with_text_layer": 42,
|
||||||
|
"ocr_processed_pages": 42
|
||||||
|
},
|
||||||
|
"table_of_contents": [
|
||||||
|
{
|
||||||
|
"title": "Термины и определения .............................................................................................",
|
||||||
|
"page": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Сведения о приборах ...................................................................................................",
|
||||||
|
"page": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Введение .........................................................................................................................",
|
||||||
|
"page": 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "1. Обследование зданий и сооружений ..................................................................",
|
||||||
|
"page": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Результаты обследования Сооружения ограждения (поз. 1) .................",
|
||||||
|
"page": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "2. Обследование инженерных коммуникаций .....................................................",
|
||||||
|
"page": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "2.1. Описание и конструктивные особенности инженерных коммуникаций",
|
||||||
|
"page": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "2.2. Техническое состояние инженерных коммуникаций ..................................",
|
||||||
|
"page": 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "коммуникаций ............................................................................................................",
|
||||||
|
"page": 17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "3. Сводная таблица по сооружениям и инженерным коммуникациям ..........",
|
||||||
|
"page": 19
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Список литературы ...................................................................................................",
|
||||||
|
"page": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Приложение 1. Ситуационный план .....................................................................",
|
||||||
|
"page": 21
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Приложение 2. Фотоматериалы ..............................................................................",
|
||||||
|
"page": 23
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Приложение 3. Допуск СРО, техническое задание, программа работ ...........",
|
||||||
|
"page": 34
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pages": [
|
||||||
|
{
|
||||||
|
"page_number": 1,
|
||||||
|
"image": "page_001.png",
|
||||||
|
"line_count": 22,
|
||||||
|
"pdf_text_preview": "2026 \n \nИнв. № подл. \nПодпись и дата \nВзам. инв. № \n \n \n \n \n \n \nОбщество с ограниченной ответственностью «Мераком» \n \n«Подключение к централизованной системе водоотведения \nобъекта: Жилая застройка с объектами социальной инфраструктуры \nпо адресу: г. Москва, САО, Головинский район, Кронштадтский \nбу",
|
||||||
|
"ocr_text_preview": "MEPAROM\nPOEKTHAAKOM∩AHИA\nO6eCTBO C OrpaHHueHHOi OTBeTCTBeHHOcTbIO《MepaKOM>>\n《lIoIKJIIOyeHMe K HeHTpaJIM30BaHHoY cHcTeMe BOI00TBeIeHUA\nHO aIpecy: 1. MocKBa, CAO, FoJIoBUHcKu paioH, KpoHWTaITcKU\n6yJIbB., (16-18)\nTEXHNYECKWYOTYET\nTexHUyecKoe 06cJ1eIoBaHHe cTpoUTeJIbHbIx KOHcTpyKuni\n180-24/MCK-OCK\n3aKa34MK: OOO《MCK HpoeKT\nFeHepaJIbHbin IupeKTop\nB.B. By4HeB\nB3aM. HHB. No\nTJIaBHbIi HHKeHep IpoeKTa\nH.P. ..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 2,
|
||||||
|
"image": "page_002.png",
|
||||||
|
"line_count": 14,
|
||||||
|
"pdf_text_preview": "Формат А4 \n 2 \n \nСписок исполнителей \n \n \nГлавный инженер проекта \n \n \n \n \n \nН.Р. Хисмятуллин \n(подпись, дата) \n \n(обследование, \nсоставление и \n оформление отчета) \n \n \n \nГенеральный директор \n \n \n \n \n \n \nВ.В. Бучнев \n(подпись, дата) \n \n \n (руководитель работ, \nпроверка отчета)",
|
||||||
|
"ocr_text_preview": "2\nCIMcOK MCHO.IHNTEJIen\nTJaBHbIY HHKeHep IpoeKTa\nH.P. XHCMATYJIINH\n(OIHCb, aTa)\n(06cIeIOBaHHe,\ncocTaBJIeHHe H\noΦopMJIeHHe OTueTa)\nTeHepaIbHbIY IHpeKTOp\nB.B. ByuHeB\n(OIHcb, IaTa)\n(pyKOBOIHTeJIb pa6OT,\nIpoBepKa OTueTa)\nΦopMaT A4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 3,
|
||||||
|
"image": "page_003.png",
|
||||||
|
"line_count": 40,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.С \nИзм. Кол.уч. Лист №док. \nПодп. \nДата \nРазраб. \nХисмятуллин \n \n10.04.26 \nСодержание тома \nСтадия \nЛист \nЛистов \n \n \nП \n1 \n1 \nГИП \nХисмятуллин \n \n10.04.26 \n \nН.контр. \nБучнев \n \n10.04.26 \n \n \n \n 3 \n \nСодержание тома 180-24/МСК-ОСК \n \n \nОбозначение \nНаименование \nСтраница \n \nТитульный",
|
||||||
|
"ocr_text_preview": "3\nCo1epKaHMe T0Ma 180-24/MCK-OCK\nO603HayeHHe\nHanMeHOBaHNe\nCTpaHuua\nTHTyIBHBIN JIHCT\n6/H\nCINCOK HCOJIHNTeJIen\n2\n180-24/MCK-OCK.C\nConepKaHHe TOMa\n3\n180-24/MCK-OCK.1I3\nHOACHNTeJIbHaA 3aHINCKa\n4-42\n180-24/MCK-OCK.C\nV3M.\nKoLyu.\nJIncT\nNeJOK.\nHo.\nIara\nPa3pao.\nXHCMATYUNH\n10.04.26\nCTaJN\nJIucT\nJIHCTOB\nⅡ\n1\n1\nTMII\nXHCMITYINH\n10.04.26\nCoJepKaHNe TOMa\nMEPAKOM\nH.KOHTp.\nByuHeB\n10.04.26\nnP O EKT HAA K OM n AHN 9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 4,
|
||||||
|
"image": "page_004.png",
|
||||||
|
"line_count": 55,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nИзм. Кол.уч. Лист №док. \nПодп. \nДата \nРазраб. \nХисмятуллин \n \n10.04.26 \nПояснительная записка \nСтадия \nЛист \nЛистов \n \n \nП \n1 \n39 \nГИП \nХисмятуллин \n \n10.04.26 \n \nН.контр. \nБучнев \n \n10.04.26 \n \n \n \n 4 \nСодержание \nСодержание .......................................................",
|
||||||
|
"ocr_text_preview": "4\nConepKaHne\nCoIepKaHne ..\n.Oun6ka!3aKJIaIKaHeopeIeJeHa.\nTepMWHbI W opeIeJIeHUA\nCBeIeHNA O IpuOopax..\nBBeIeHNe..\n9\n1. O6cJeIoBaHMe 3IaHni W coopyKeHUn\n11\n1.1.\nPe3yJIbTaTb1 06cJIeI0BaHNA Co0pyKeHNA 0rpaKIeHMA (H03. 1)\n11\n2. O6cJIeIOBaHMe HHKeHepHbIX KOMMyHUKaIN\n..15\n2.1. OINcaHHe H KOHcTpyKTHBHLIe 0cO6eHHOcTN HHKeHepHbIX KOMMyHUKaIN... 15\n..16\n2.3 BbIBOIbI HO OHeHKe TeXHNYeCKOrO cOcTOAHUA 06cJIeIOB..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 5,
|
||||||
|
"image": "page_005.png",
|
||||||
|
"line_count": 60,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n2 \nИзм. Кол.у Лист №док. Подп. \nДата \n 5 \nТермины и определения \nТермины и определения приведены в соответствии с ГОСТ 31937-2024 «Здания \nи сооружения. Правила обследования и мониторинга технического состояния [1]. \n- безопасность эксплуатации здания (сооружения): Комплексн",
|
||||||
|
"ocr_text_preview": "5\nTepMWHbI W o1peIeJIeHUA\nH COOpyKeHHq. IIpaBHJIa 06cJIeIOBaHHA H MOHHTOpHHra TexHHYeCKOrO cOCTOAHHx [1].\n1(coopyKeHUA):KoMIJeKCHOeCBOiCTBO\n06beKTa IpOTHBOCTOATb eTo HIepexOIy B aBapHYHOe cOcTOYHHe, OIpeIeJIAeMOe:\nTeKyIHIHM OCTaTOuHbIM peCypcOM H TexHHueCKHM cOCTOAHHeM oObeKTa; CTeIeHbIO\npeKOHCTpyKHHH, KaIIMTaJIbHbIM peMOHT H T. 11.) H OKpyKarOWen cpeIbI KaK IpHpoIHOrO,\nTaK H TeXHOreHHOro xapaKTep..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 6,
|
||||||
|
"image": "page_006.png",
|
||||||
|
"line_count": 46,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n3 \nИзм. Кол.у Лист №док. Подп. \nДата \n 6 \nнесущей строительной конструкции или здания и сооружения в целом, а также \nгрунтов их основания, установленная в зависимости от доли снижения несущей \nспособности и эксплуатационных характеристик. \n- критерий оценки технического сост",
|
||||||
|
"ocr_text_preview": "6\nHecyeH CTpoHTeJIbHOH KOHCTpyKHH HJIH 3IaHHA H cOOpyKeHHA B HeJIOM, a TaKKe\nTPYHTOB HX OCHOBaHHA, yCTaHOBJIeHHaA B 3aBHCHMOCTH OT IOJIH CHHKeHHA HeCyWeH\nKpUTepun OHeHKH TexHUyecKOro cocTOAHUa: YcTaHOBJIeHHOe IpOeKTOM\nHJIH\nHOpMaTHBHbIM IOKyMeHTOM KOJIN4eCTBeHHOe HJIH KayeCTBeHHOe 3HaYeHHe HapaMeTpa,\nxapaKTepHCTHKH CTpOHTeJIbHON KOHCTpyKHHH W FpyHTOB OcHOBaHUA.\nOeHKa TeXHN4ecKOro cocTOAHMA: YcTaHOB..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 7,
|
||||||
|
"image": "page_007.png",
|
||||||
|
"line_count": 35,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n4 \nИзм. Кол.у Лист №док. Подп. \nДата \n 7 \nи повреждения, приведшие к снижению несущей способности, но отсутствует \nопасность внезапного разрушения, потери устойчивости или опрокидывания, и \nфункционирование конструкций и эксплуатация здания или сооружения возможны \nлибо при ",
|
||||||
|
"ocr_text_preview": "7\nH IIOBpeKIeHHA, IpHBeIHe K CHHKeHHIO HeCyWen CHOcO6HOCTH, HO OTCyTCTByeT\nOaCHOCTb BHe3aMHOrO pa3pyWeHHA, HOTepH yCTON4HBOCTH WJIИ OHpOKHIbIBaHHA, И\nP K \nJH6o IpH KOHTpoIe (MOHHTOpHHre) TeXHHHeCKOrO COCTOAHHA, JIH6o IpH IpOBeIeHHH\nrPyHTOB OCHOBaHHA H HOCJIeIyIOWeM MOHHTOpHHre TeXHHYeCKOrO COCTOXHHA (IpH\nHe06xOIUMOCTH).\naBapuuHoe\ncocTOAHNe: KaTerOpHA TeXHH4eCKOrOCOcTOAHHA\n CTpOHTeJIbHOH\nKOHCT..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 8,
|
||||||
|
"image": "page_008.png",
|
||||||
|
"line_count": 41,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n5 \nИзм. Кол.у Лист №док. Подп. \nДата \n 8 \nСведения о приборах \nНаименование средства \nНазначение \nШтангенциркуль ШЦ-1-125-0,1 \n(ГОСТ 166-89) \nОпределение \nтолщины \nарматуры \nи \nэлементов строительных конструкций \nЛазерный дальномер DISTO classic, \nстандартная рулетка \nЛинейн",
|
||||||
|
"ocr_text_preview": "8\nCBeIeHMa O IpnOOpax\nHaNMeHoBaHNe cpeIcTBa\nHa3HayeHne\nITaHreHUHpKyJIb IILI-1-125-0,1\nOpeJeJeHne\nTOJIIHHHI\napMaTypb1\nИ\n(TOCT 166-89)\n3IEMeHTOB CTpOHTeJIbHbIX KOHCTpyKHY\nJIa3epHbI IaJIbHOMep DISTO classic ,\nJIHHeYHbIe H3MepeHNA\nCTaHapTHax pyJIeTKa\nPyJIeTKa H3MepHTeJIbHaA\nJIHHeYHbIe H3MepeHHA\nMeTaJIJIHyecKax Matrix Chrom 5M x\n13 MM\nMeTaJIJINYecKaA WeTKa\nHOJrOTOBKa\nOCHOBaHNA\n(OuNCTKa\nKOHCTPyKUHY\nOT O..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 9,
|
||||||
|
"image": "page_009.png",
|
||||||
|
"line_count": 50,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n6 \nИзм. Кол.у Лист №док. Подп. \nДата \n 9 \nВведение \n23.03.2026 г было выполнено обследование сооружений и инженерных \nкоммуникаций в зону влияния от нового строительства объекта «Подключение к \nцентрализованной системе водоотведения объекта: Жилая застройка с объектами \nсоци",
|
||||||
|
"ocr_text_preview": "9\nBBeIeHMe\n23.03.2O26 1 6bIJIO BbI1IOJIHeHO 06cJIeIOBaHHe COOpyKeHH W HHKeHepHbIX\nKOMMyHMKaUH B 3OHy BJIHAHHA OT HOBOrO CTpOHTeJIbCTBa OObeKTa 《IIoIKJIOueHHe K\nHeHTpaJIH3OBaHHOn cHCTeMe BOIOOTBeIeHHA O6beKTa: KHJIaA 3aCTpoMKa C OObeKTaMH\ncOHaIbHOi HHΦpacTpyKTypbI HIO aIpecy: r. MocKBa, CAO, ToJIOBHHCKH paiOH,\nKpOHITaITCKH 6yJIbB., (16-18)> H cOCTaBJIeH HaCTOAIIIHY OTHeT.\n23.03.2026 r HacToAmni 0Ty..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 10,
|
||||||
|
"image": "page_010.png",
|
||||||
|
"line_count": 46,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n7 \nИзм. Кол.у Лист №док. Подп. \nДата \n 10 \nстандарт предназначен для применения в строительстве при проведении \nобследований и мониторинга технического состояния зданий и сооружений, при \nразработке заданий на проектирование, обследование и мониторинг зданий и \nсооружений, ",
|
||||||
|
"ocr_text_preview": "10\nIpИ IpoBeIeHHИ\n06cJIeIOBaHH W MOHHTOpHHra TeXHH4eCKOrO COCTOAHHA 3IaHH W COOpyKeHHi, IpH\npa3pa6oTKe 3aIaHH Ha HpoeKTHpoBaHHe, O6cIeIOBaHHe И MOHHTOpHHr 3IaHHY H\ncoOpyKeHHi, a TaKKe IpH pa3pa6oTKe IpoeKTHOi IOKyMeHTaIHH, W He yCTaHaBJIHBaeT\nrpe6oBaHNN\n K HpoeKTHpoBaHHIO\nMepoIpHATHn\nHoycTpaHeHHfo\nBbIABJIEHHbIX\nHeIOCTaTKOB B FpyHTOBbIX MacCHBaX, KOHCTpyKHHAX, HX 3IeMeHTaX W cOeIHHeHHAX, a\nTaKKeK ..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 11,
|
||||||
|
"image": "page_011.png",
|
||||||
|
"line_count": 35,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n8 \nИзм. Кол.у Лист №док. Подп. \nДата \n 11 \n1. Обследование зданий и сооружений \n1.1. \nСооружения ограждения (подпорная стена) (поз. 1) \nВыполнено обследование ограждения (подпорная стена) (поз. 1) в зоне влияния \nстроительства объекта: «Подключение к централизованной систем",
|
||||||
|
"ocr_text_preview": "11\n1. O6cJIeIoBaHMe 3IaHui W coopyKeHUi\n1.1.\nCoOpyKeHHA orpaKIeHU (HoIHOpHaA cTeHa) (IIO3. 1)\nBbIMIOJIHeHO 06cJIeIOBaHHe OrpaKIeHHA (HOIHOpHaA CTeHa) (1IO3. 1) B 3OHe BJINAHHX\ncTpoHTeJIbcTBa OObeKTa: 《IIoIKJIIOueHHe K HeHTpaJIH3OBaHHON cHCTeMe BOIOOTBeIeHHA\n06beKTa: KHJIaX 3acTpoiKa C O6beKTaMH cOUHaJbHon HHΦpacTpyKTypHI HO aIpecy: 1.\nMocKBa, CAO, ToJOBHHCKHH paHOH, KpOHHTaITCKH 6yJIbB., (16-18)>...."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 12,
|
||||||
|
"image": "page_012.png",
|
||||||
|
"line_count": 38,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n9 \nИзм. Кол.у Лист №док. Подп. \nДата \n 12 \n \n1.2. \nРезультаты обследования сооружения М1/Н б/н (поз. 2) \nОбщее описание: \nВыполнено обследование сооружения М1/Н б/н (поз. 2) в зоне влияния от \nнового \nстроительства \nобъекта \n«Подключение \nк \nцентрализованной \nсистеме \nводоот",
|
||||||
|
"ocr_text_preview": "12\n1.2.\nPe3yJIbTaTb1 06cJIeI0BaHMH c0opyKeHMa M1/H 6/H (H03. 2)\nOomee oHMcaHMe:\nBbIIIOJIHeHO 06cJIeIOBaHHe COOpyKeHHX M1/H 6/H (HO3. 2) B 3OHe BJIMAHHA OT\nHOBOrO CTpoNTeJIbCTBa OObeKTa 《HIoIKJIIOueHHe K HeHTpaJIM3OBaHHOn CHCTeMe\nBOIOOTBeIeHH8 06beKTa: KuJIaA 3aCTpoiKa C o6beKTaMH cOIHaIbHO1 HHΦpacTpyKTypbI\n110 aIpecy: r. MocKBa, CAO, ToJOBUHCKH paOH, KpOHMTaITCKH 6yJIbB., (16-18)>.\nPa60Tb1 HO 06..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 13,
|
||||||
|
"image": "page_013.png",
|
||||||
|
"line_count": 33,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n10 \nИзм. Кол.у Лист №док. Подп. \nДата \n 13 \n1.3. \nРезультаты обследования Сооружения ограждения (поз. 3) \n(некапитальное сооружение) \nОбщее описание: \nВыполнено обследование сооружения ограждения (поз. 3) в зоне от нового \nстроительства объекта «Подключение к централизованно",
|
||||||
|
"ocr_text_preview": "13\n1.3. Pe3yJIbTaTb1 06cJIeI0BaHUa CoopyKeHHA 0rpaKIeHUA (103. 3)\n(HeKaIIUTaJIbHoe coopyKeHHe)\nOomee oMcaHMe:\nBbIIIOJIHeHO 06cJIeIOBaHHe COOpyKeHH8 OrpaKIeHHA (IO3. 3) B 3OHe OT HOBOTO\n06beKTa: KuJaA 3acTpoiKa c o6beKTaMH cOIHaJIbHon HHΦpacTpyKTypb1 HIO aIpecy: 1.\nMocKBa, CAO, ToIOBHHCKH paHOH, KpOHTaITCKHY 6yJIbB., (16-18)>).\nPa6oTbI IO 06cJIeIOBaHHIO 6bIIN BbIOJIHeHbI 23.03.2O26 1.\nK d1 \nI..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 14,
|
||||||
|
"image": "page_014.png",
|
||||||
|
"line_count": 23,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n11 \nИзм. Кол.у Лист №док. Подп. \nДата \n 14 \nВыводы и рекомендации: \nСооружение ограждения (поз. 2) – некапитальное (не имеют прочной связи с \nземлей и конструктивные характеристики позволяют осуществить перемещение и \n(или) демонтаж и последующую сборку без несоразмерного ущ",
|
||||||
|
"ocr_text_preview": "14\nBbIBoIbI W peKOMeHIaHN:\nCoopyKeHMe OrpaKIeHNa (1IO3. 2) - HeKaIINTaJIbHOe (He HMeIOT Ipo4HOn cBA3H C\n(HJIH) IeMOHTaxK H I0cJIeIyIOyI0 c6opKy 6e3 Hecopa3MepH0ro yIWep6a (11. 10.2 190-Φ3 B\npeⅡ. ΦeIepaJIbH0r0 3aK0Ha 0T 03.08.2018 N 342-Φ3)).\nO6mee\nCOCTOAHNe\nKOHCTPYKHuN\ncoopyKeHNA\norpaKIeHna\n(103. 3)\n(HeKaIUTaJbHoe coopyKeHMe)-P\npaooTococooHoe\n(m\nKaTeropHA\nCOCTOAHNA\nHOpMUpyIOTCA.\nJIucT\n180-24/MCK-O..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 15,
|
||||||
|
"image": "page_015.png",
|
||||||
|
"line_count": 24,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n12 \nИзм. Кол.у Лист №док. Подп. \nДата \n 15 \n2. Обследование инженерных коммуникаций \n2.1. Описание и конструктивные особенности инженерных коммуникаций \nВ зоне влияния работ находятся существующие действующие инженерные \nкоммуникации, расположенные в соответствии с приложени",
|
||||||
|
"ocr_text_preview": "15\n2. O6cJIeIOBaHMe HHKeHepHbIX KOMMyHNKaIN\n2.1. O1IMcaHNe H KOHCTPyKTHBHbIe oco6eHHOcTH HHKeHepHbIX KOMMyHMKaINi\nB 30He BJIHAHHA pa6OT HaXOIITCA CyIHIeCTByIOIIHe IeicTByIOIIHe HHKeHepHBIe\nKOMMyHHKaHNH, paCHOJIOKeHHbIe B COOTBeTCTBHN C IpHJIOKeHHeM Ne1: BOIOCTOK IIO3. 1\n(O1000 MM, MaTepHaJI Tpy6oIpOBOIa - KeJIe306eTOH);B0I0cTOK I03. 2 (O535 MM,\nTpy6opOBOIa - KeJIe306eTOH);BOIOcTOK IO3. 4 (O400 MM,..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 16,
|
||||||
|
"image": "page_016.png",
|
||||||
|
"line_count": 170,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n13 \nИзм. Кол.у Лист №док. Подп. \nДата \n 16 \n \n2.2. Техническое состояние инженерных коммуникаций \nТехническое состояние инженерных коммуникаций, расположенных в зоне \nвлияния строительных работ, оценивается как работоспособное. \nОписание \nи \nконструктивные \nособенности \nинже",
|
||||||
|
"ocr_text_preview": "16\n2.2. TexHNyecKOe cocTOAHHe HHKeHepHbIX KOMMyHMKaIUi\nTexHHHeCKOe cocTOAHHe\nHHKeHepHbIX KOMMyHHKaHIHY, paCHOJIOKeHHbIX B 3OHe\nOnncaHne\nH\nKOHCTPYKTHBHbIe\noCo6eHHOCTH\nHHKeHepHbIX\nKOMMYHHKaIHY,\n paCHIOJIOKeHHBIX B 3OHe BJIHAHHA CTpONTeJILHBIX pa6OT, IpeICTaBJIeHO B TaOJIHe Ne1.\nTa6uua N1\nKaTer\nN\nHpeIBapn-\noN\nII.\ncxe\nHaHMeHOBaHN\neceTei\nMarepnaJ1\nJuaMeT\nP,MM\nA6c.oTM.TJIyOuHa\n3aJIOKeHHH\nMpuMeyaHne\nIpOT..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 17,
|
||||||
|
"image": "page_017.png",
|
||||||
|
"line_count": 40,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n14 \nИзм. Кол.у Лист №док. Подп. \nДата \n 17 \n2.3 Выводы по оценке технического состояния обследованных \nинженерных коммуникаций \n23.03.2026 \nг \nООО \n«МЕРАКОМ» \nвыполнило \nна \nосновании \nдоговора \nобследование инженерных коммуникаций. в зоне влияния от нового строительства \nо",
|
||||||
|
"ocr_text_preview": "17\n2.3 BbIBOIbI HO oHeHKe TeXHHYeCKOrO cOCTOAHNA 06cJIeIOBaHHbIX\nHHKeHepHbIX KOMMyHUKauuN\n23.03.20261OOO《MEPAKOM>\nBbIOJIHHJIO Ha OCHOBaHHИ JOrOBOpa\n I K \n06beKTa <IIoIKJIIOueHHe K HeHTpaJIH3OBaHHOI cHCTeMe BOIOOTBeIeHHA 0ObeKTa: KHIaX\nFoIOBHHCKHY paHOH, KpOHIHTaITCKH 6yJIbB., (16-18)> W cOcTaBJIeH HaCTOAH OTYeT.\nB 3OHe BJIHAHH8 CTpONTeJIBCTBa paCHIOJIOKeHBI CyeCTByIOIHe HHKeHepHBIe\nKOMMYHNKaI..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 18,
|
||||||
|
"image": "page_018.png",
|
||||||
|
"line_count": 36,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n15 \nИзм. Кол.у Лист №док. Подп. \nДата \n 18 \n- коммуникация - водосток (трубопровод Ø1000 мм, материал трубопровода - \nжелезобетон), обозначенная №5 на инженерно-топографическом плане в \nприложении №1, обследована в предварительной зоне влияния на протяженности \n105,5 м, абс.",
|
||||||
|
"ocr_text_preview": "18\nKOMMyHHKaIH8 - BOIOcTOK (Tpy6oIpoBOI O1OOO MM, MaTepHaJ1 Tpy6oIpoBOIa\nKeJIe306eTOH), 0603HayeHHaA Ne5 Ha HHKeHepHO-TO1IOrpaΦHHeCKOM IJIaHe B\nIpUJIOKeHHH Ne1, 06cJIeIOBaHa B IpeIBapHTeJIBHOI 3OHe BJIHAHHA Ha IpOTAKeHHOCTH\n105,5 M, a6c. OTM. H FIy6HHa 3aJIOKeHH8 COCTaBJIHeT - OTM. JIOTKa - 156,54 M,\n3arIyOIeHHe- 2,77M. KoMMyHHKa1IUA\nHe HMeeT ⅡeΦeKTOB,HaXOIHTCA B\npa6oTOCHIOCO6HOM TeXHHYeCKOM COCTO..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 19,
|
||||||
|
"image": "page_019.png",
|
||||||
|
"line_count": 48,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n16 \nИзм. Кол.у Лист №док. Подп. \nДата \n 19 \n \n3. Сводная таблица по сооружениям и инженерным коммуникациям \nПоз. \nНаименование здания \nКатегория \nсостояния \nконструкц\nий \nПредельные дополнительные \nдеформации по СП 22.13330.2016 \nМаксимальная \nосадка, см \nОтносительная \nразн",
|
||||||
|
"ocr_text_preview": "19\n3. CBOIHaA Ta6.JIHHa 1O cOOPyKeHUAM H HHKeHepHbIM KOMMyHNKaIUAM\nKaTeropua\nHpeeJIbHbIeJoo.IHNTe.IbHb1e\nIo3.\nHaHMeHOBaHNe 3IaHNA\nCOCTOAHHA\nJeΦopMaMm 1o CII 22.13330.2016\nKOHCTPYKH\nMaKcMMaJIbHaA\nOTHOCNTeJIbHaA\nni\nocaIKa, CM\npa3HocTb 0caIoK △s/L\nOrpaxIeHNe\nI\n5,0\n0,0020\n(OIOpHaA CTeHa)\nHeKa1INTaJIbH0e c0opyKeHHe (1. 10.2 190-Φ3\nB peⅡ. ΦeIepaJIbH0ro 3aKOHa OT 03.08.2018 N\n2\nCoopykeHne M1/H\nII\n342-Φ3)..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 20,
|
||||||
|
"image": "page_020.png",
|
||||||
|
"line_count": 54,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n17 \nИзм. Кол.у Лист №док. Подп. \nДата \n 20 \nСписок литературы \n1. \nГОСТ \n31937-2024 \n«Здания \nи \nсооружения. \nПравила \nобследования \nи \nмониторинга технического состояния». \n2. \nСП 11-105-97 «Инженерно-геологические изыскания для строительства». \n3. \nСП 15.13330.2020 «Каменн",
|
||||||
|
"ocr_text_preview": "20\nCHucoK JIUTepaTypbI\n1.FOCT 31937-2024 《3aHH8И c0opyKeHHA.\nHpaBHJIaO6cJeIOBaHHAИ\nMOHHTOpHHTa TeXHH4eCKOTO COCTOAHHA>.\n2.\nCII 11-105-97 <MHKeHepHO-reOJIOrH4eCKHe H3bICKaHHA IJIA CTpoHTeJIbcTBa>.\n3.\n4.\nCII 16.13330.2017 《CTaJIbHbIe K0HCTpyKIHH>.\n5.\nCII 20.13330.2016 《CHnII 2.01.07-85* Harpy3KH H B03IeHcTBHH>.\n6.\nCII 22.13330.2016 《CHuII 2.02.01-83* OcH0BaHHX 3IaHHM H c00pyKeHN>.\n7.\nCII 24.13330.20..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 21,
|
||||||
|
"image": "page_021.png",
|
||||||
|
"line_count": 11,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n18 \nИзм. Кол.у Лист №док. Подп. \nДата \n 21 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nПриложение 1. \nСитуационный план",
|
||||||
|
"ocr_text_preview": "21\npuJIoKeHNe 1.\nCuTyaINOHHbIN IJIaH\nJucT\n180-24/MCK-OCK.I3\n18\nИ3M.\nKon.y\nIuCT\nNonoK.om.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 22,
|
||||||
|
"image": "page_022.png",
|
||||||
|
"line_count": 157,
|
||||||
|
"pdf_text_preview": "К1-1\nК1-2\nК1-3\nК1-4\nК1-2сущ.\nК1-5 К1-6\nК1-7\nК1-8\nК1-9\nК1-13\nК1-14\nК1-15\nК1-16\nК1-17\nК1-10\nК1-11\nК1-12\nК1-18\nК1-19\nК1-1сущ.\nRпзв 18,00 м\nRпзв 15,60 м\nRпзв 12,80 м\nRпзв 18,00 м\nRпзв 14,40 м\nRпзв 17,20 м\nRпзв 18,00 м\nRпзв 16,00 м\nRпзв 17,60 м\nRпзв 15,20 м\nRпзв 12,80 м\nRпзв 12,80 м\n1\n1\n2\n8\n7\n6\n2\n3\n5\n4\n3",
|
||||||
|
"ocr_text_preview": "CumyauUoHHblu nAaH CnpedbapUmeAbHou 3oHouBnUgHUa\nKomno8oH W18 (K1-19)\n4,5x3,6x4,9(h)\npON xmA0 no CK2406-86\nKOmA0GHP19\nKomA0@n W6 (K3-5 w Kf-5)\nPGMH xomro8a no CK2406-86\n6,2x3,6x4,3h/\n30HA\nAU\n5,8x3,6x3,6(h)\nErYMMPDBAHMA\nKom/06n P17 (K1-18)\nC paMHWm xpennenue no CK2406-86\n150.94\nRACTPOAKM\n81.02\n3.6x3,6x4,2/h)\n30H1\nKM\nC pOMHSM xpenAeHUeN no\nCK2406-86\nRn3817,20\n30,0.60\nOXP!\nRn38 18,00\n10.09:\n312024.0\n..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 23,
|
||||||
|
"image": "page_023.png",
|
||||||
|
"line_count": 15,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n20 \nИзм. Кол.у Лист №док. Подп. \nДата \n 23 \nПриложение 2. Фотоматериалы \nПоз. 1. Сооружение ограждения (подпорная стена) \n \nФото.1. \nОбщий вид ограждения (подпорная стена) поз. 1. (фрагмент-1). \n \nФото.2. \nОбщий вид ограждения (подпорная стена) поз. 1. (фрагмент-2).",
|
||||||
|
"ocr_text_preview": "23\nHpuJIoKeHMe 2. ΦoToMaTepMa.IbI\nIo3. 1. CoopyKeHHe orpaKIeHUa (HoInopHaA cTeHa)\nΦOTO.1.\nO6uM BHI OrpaKIeHH9 (1OIOpHaA CTeHa) 1IO3. 1. (ΦparMeHT-1).\nΦOTO.2.\nO6ⅢH BHI OrpaKIeHHA (1OIOpHaA CTeHa) HO3. 1. (ΦparMeHT-2).\nJIucT\n180-24/MCK-OCK.I3\n20\nV3M.\nKon1.y\nIHCT\nNonoK.on.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 24,
|
||||||
|
"image": "page_024.png",
|
||||||
|
"line_count": 13,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n21 \nИзм. Кол.у Лист №док. Подп. \nДата \n 24 \n \nФото.3. \nОбщий вид ограждения (подпорная стена) поз. 1. (фрагмент-3). \n \nФото.4. \nОбщий вид ограждения (подпорная стена) поз. 1. (фрагмент-4).",
|
||||||
|
"ocr_text_preview": "24\nΦoTO.3.\nO611IHY BHI OrpaKIeHHA (1OIHOpHaA CTeHa) 1O3. 1. (ΦparMeHT-3)\nΦoTO.4.\nO61INY BHI OrpaKIeHH (HIOIHOpHaA CTeHa) HO3. 1. (ΦpaTMeHT-4)\nJIucT\n180-24/MCK-OCK.II3\n21\nV3M.\nKon.y\nInCT\nNoOK.oInl.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 25,
|
||||||
|
"image": "page_025.png",
|
||||||
|
"line_count": 14,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n22 \nИзм. Кол.у Лист №док. Подп. \nДата \n 25 \nПоз. 2. Сооружение М1/Н \n \nФото.5. \nОбщий вид Сооружение М1/Н поз. 2. (фрагмент-1). \n \nФото.6. \nОбщий вид Сооружение М1/Н поз. 2. (фрагмент-2).",
|
||||||
|
"ocr_text_preview": "25\nHo3. 2. CoopyKeHne M1/H\nΦOTO.5.\nO61uuY BH CoopyKeHHe M1/H 1O3. 2. (ΦparMeHT-1).\nΦOTO.6.\nO6mni BH1 CoopyKeHHe M1/H 1O3. 2. (ΦparMeHT-2).\nJIucT\n180-24/MCK-OCK.I3\n22\nV3M.\nKon.y\nIuCT\nNonoK.om.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 26,
|
||||||
|
"image": "page_026.png",
|
||||||
|
"line_count": 18,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n23 \nИзм. Кол.у Лист №док. Подп. \nДата \n 26 \n \nПоз. 3. Сооружение М1/Н \n \nФото.7. \nОбщий вид ограждения поз. 3. (фрагмент-1). \n \nФото.8. \nОбщий вид ограждения поз. 3. (фрагмент-2).",
|
||||||
|
"ocr_text_preview": "26\no3. 3. CoopyKeHne M1/H\nHIUI\nΦoTO.7.\nO61uMY BHI OrpaKIeHHA IO3. 3. (ΦpaTMeHT-1)\nyMHle\nnnapoBion\nFOTOBaA OTAenKa\nΦOTO.8.\nO61H BHI OTpaKIeHHA HO3. 3. (ΦparMeHT-2).\nJIucT\n180-24/MCK-OCK.II3\n23\nV3M.\nKon1.y\nJIncT\nNonoK.om.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 27,
|
||||||
|
"image": "page_027.png",
|
||||||
|
"line_count": 13,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n24 \nИзм. Кол.у Лист №док. Подп. \nДата \n 27 \nИнженерные коммуникации \n \n \n \n \nФото.9. \nОбщий вид водостоков; поз. 1 (Ø1000 мм, материал трубопровода - \nжелезобетон), поз. 2 (Ø535 мм, материал трубопровода - полипропилен), поз. 3 (Ø400 мм, \nматериал трубопровода - железобетон)",
|
||||||
|
"ocr_text_preview": "27\nMHKeHepHbIe KOMMyHUKaUN\nΦoTO.9.\nO6mH BHI BOIOcTOKOB; HO3. 1 (O1000 MM, MaTepHaJ1 Tpy6onpOBOIa -\nKeJIe306eTOH), 1I03. 2 (O535 MM, MaTepHaJI1 Tpy601p0B0Ia - IOJIH1p0IHJIeH), 103. 3 (O400 MM,\nJucT\n180-24/MCK-OCK.II3\n24\nV3M.\nKon1.y\nInCT\nNonOK.on1.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 28,
|
||||||
|
"image": "page_028.png",
|
||||||
|
"line_count": 11,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n25 \nИзм. Кол.у Лист №док. Подп. \nДата \n 28 \n \n \n \n \n \n \nФото.10. \nОбщий вид водосток поз. 4 (Ø400 мм, материал трубопровода - железобетон).",
|
||||||
|
"ocr_text_preview": "28\nΦoTO.10.\nO6HMY BHI BOI0cTOK HI03. 4 (O400 MM, MaTepHaJ1 Tpy6oIp0B0Ia - KeJIe306eTOH).\nJucT\n180-24/MCK-OCK.II3\n25\nV3M.\nKon1.y\nInCT\nNoOK.o.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 29,
|
||||||
|
"image": "page_029.png",
|
||||||
|
"line_count": 12,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n26 \nИзм. Кол.у Лист №док. Подп. \nДата \n 29 \n \n \n \nФото.11. \nОбщий вид водосток поз. 5 (Ø1000 мм, материал трубопровода - железобетон).",
|
||||||
|
"ocr_text_preview": "29\nB125-6600\nΦoTO.11.\nO61H BHI BOIOcTOK I03. 5 (O100O MM, MaTepHa1 Tpy6oIpOBOIa - KeJIe306eTOH).\nJucT\n180-24/MCK-OCK.II3\n26\nV3M.\nKon.y\nIHCT\nNoOK.oJ.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 30,
|
||||||
|
"image": "page_030.png",
|
||||||
|
"line_count": 12,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n27 \nИзм. Кол.у Лист №док. Подп. \nДата \n 30 \n \n \n \nФото.12. \nОбщий вид водопровод поз. 6 (Ø315 мм, материал трубопровода - полиэтилен, \nпроложен в стальном футляре d530 мм).",
|
||||||
|
"ocr_text_preview": "30\nΦoTO.12.\nO611MY BHI BOIO1pOBOI HO3. 6 (O315 MM, MaTepHaI Tpy6o1IpOBOIa - HOJIH9THJIeH,\nIpOJIOKeH B CTaJIbHOM ΦyTIApe d530 MM).\nJucT\n180-24/MCK-OCK.II3\n27\nV3M.\nKon.y\nIHCT\nNoOK.oJ.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 31,
|
||||||
|
"image": "page_031.png",
|
||||||
|
"line_count": 12,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n28 \nИзм. Кол.у Лист №док. Подп. \nДата \n 31 \n \n \n \nФото.13. \nОбщий вид канализация поз. 7 (Ø800 мм, материал трубопровода – \nжелезобетон, проложен в железобетонном щите Ø2000 мм).",
|
||||||
|
"ocr_text_preview": "31\nΦoTO.13.\nO6mH BHI KaHaJIN3aHA 1O3. 7 (O8OO MM, MaTepHaI Tpy6o1IpOBOIa -\nKeJIe306eTOH, Ip0JI0KeH B KeJIe306eT0HHOM 川HTe O2000 MM).\nJIucT\n180-24/MCK-OCK.II3\n28\nV3M.\nKon1.y\nInCT\nNoOK.oIn.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 32,
|
||||||
|
"image": "page_032.png",
|
||||||
|
"line_count": 11,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n29 \nИзм. Кол.у Лист №док. Подп. \nДата \n 32 \n \n \n \n \n \nФото.14. Общий вид теплосеть поз. 8 (Ø2х219 мм, материал трубопровода - сталь, \nпроложен в железобетонном в канале 1900х1125 мм).",
|
||||||
|
"ocr_text_preview": "32\nΦoTo.14. O61IH BHI Te1J0ceTb H03. 8 (O2x219 MM, MaTepHaJI Tpy6opoBOIa - CTaJIb,\nIpOJ0KeH B KeJIe306eTOHH0M B KaHaJIe 1900x1125 MM).\nJucT\n180-24/MCK-OCK.II3\n29\nV3M.\nKon1.y\nInCT\nNoOK.o.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 33,
|
||||||
|
"image": "page_033.png",
|
||||||
|
"line_count": 13,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n30 \nИзм. Кол.у Лист №док. Подп. \nДата \n 33 \n \n \n \nФото.15. \nОбщий вид водопровод поз. 9 (Ø300 мм, материал трубопровода - сталь).",
|
||||||
|
"ocr_text_preview": "33\n60-\nHOKO\nΦoTo.15.\nO61uMY BHI BOIO1poBOI HO3. 9 (O30O MM, MaTepHa1 Tpy6o1IpOBOIa - CTaJIb).\nJIucT\n180-24/MCK-OCK.II3\n30\nV3M.\nKon.y\nJIucT\nNonok.o.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 34,
|
||||||
|
"image": "page_034.png",
|
||||||
|
"line_count": 11,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n31 \nИзм. Кол.у Лист №док. Подп. \nДата \n 34 \n \n \n \n \n \n \n \n \n \n \n \n \nПриложение 3. \nДопуск СРО, техническое задание, программа работ",
|
||||||
|
"ocr_text_preview": "34\nIpnJIoKeHne 3.\nIouycK CPO, TexHUyecKoe 3aIaHHe, IporpaMMa pa60T\nJucT\n180-24/MCK-OCK.II3\n31\nИ3M.\nKon.y\nInCT\nNoJOK.oJm.\nIaTa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 35,
|
||||||
|
"image": "page_035.png",
|
||||||
|
"line_count": 68,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n32 \nИзм. Кол.у Лист №док. Подп. \nДата \n 35",
|
||||||
|
"ocr_text_preview": "35\nHONPW3\nPASOTOAATEIEAHAUMOHAIbHOEO6bEANHEHNECAMOPETYANPyEMbIXOPTAHN3AUN,OCHOBAHHbIXHA4EHCTBE NUBbINOJHAIOUNXHH)KEHEPHbIEH3bICKAHNA,\n7721752264-20260402-1113\n02.04.2026\n()\n(aTaaHBC)\nBbInNCKA\nHaCTOAWaABbInNCKaConepXKNTCBeAeHNAoOpHAMyeCKOMANue\nN3bICKaHNA:\nO6weCTBOCOrpaHNyeHHOnOTBeTCTBeHHOCTbIo\"MepaKOM\"\n(nonHOe HaMMeHOBaHMeOpWAMyeCKOrOnMua/MOHAMBMAyanbHOronpeAnpKHMMaTen)\n1127746164150\n1.CBeneHNAoyhe..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 36,
|
||||||
|
"image": "page_036.png",
|
||||||
|
"line_count": 50,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n33 \nИзм. Кол.у Лист №док. Подп. \nДата \n 36",
|
||||||
|
"ocr_text_preview": "36\n3.KOMneHCaLNOHHbIOHABO3MeWeHNA Bpena\nnoo6A3aTenbCTBaMnoorOBOpynOApAAa HaBbInoHeHNe\nBTOpOnypOBeHbOTBeTCTBeHHOCTM\n3.1\nyIeHOMBHeCeHB3HOCBKOMneHCaUNOHHbIN中OHABO3MeWeHNA\nBpena\nCBeAeHNAOnpHOCTaHOBneHNNnpaBaBbInONHATbHHKeHepHble\n3.2\nN3bICKaHNAO6beKTOBKanNTaMbHOrOCTPONTenbCTBa\n4.KoMneHCaWHOHHbI pOHAO6eCneyeHNAAOrOBOpHbIXO6A3aTenbCTB\naTa,CKOTopoeHcaMOperyNpyeMOiopraHM3auNMeeTnpaBO\nBbInOJHATbHHKeHepHbIeM..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 37,
|
||||||
|
"image": "page_037.png",
|
||||||
|
"line_count": 84,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n34 \nИзм. Кол.у Лист №док. Подп. \nДата \n 37 \nПриложение №1 \nк Договору \nТЕХНИЧЕСКОЕ ЗАДАНИЕ \nна \nтехническое \nобследование \nсуществующих \nконструкций \nинженерных \nкоммуникаций, зданий и сооружений, попадающих в зону влияния от нового \nстроительства объекта «Подключение к цент",
|
||||||
|
"ocr_text_preview": "37\npnnoxeHne Ne1\nKorOBopy\nTEXHNYECKOE3AAHNE\nHa\nTexHNyecKoe\n06CnenOBaHNe\nCy山eCTByO山NX\nKOHCTPyKLИ\nWHKeHepHbIX\nKOMMyHNKaLИ, 3aHN И COOPyXeHИ, HOnaAaIO山NX B 3OHy BnNAHNA OT HOBOrO\nCTpONTenIbCTBa O6beKTa 《oAKIO4eHNe K LeHTpanIN3OBaHHoN CHCTeMe BOnOOTBeAeHNA\n06beKTa: Kuna9 3aCTpoUKa C o6beKTaMN coLManbHon WHcppacTpyKTypbl no aApecy: r.\nMocKBa, CAO, FonOBMHCKHN paNOH, KpOHWTaATCKH 6ynbB., (16-18)》.\n1. Oc..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 38,
|
||||||
|
"image": "page_038.png",
|
||||||
|
"line_count": 70,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n35 \nИзм. Кол.у Лист №док. Подп. \nДата \n 38 \n \n№ \nп.п. \n№ по \nсхеме \nПлощадь/длина, м2 \nНаименование зданий и \nсооружений \n1 \n1 \nL=27,6 \nОграждение \n2 \n2 \nS=3,8 \nСооружение М1/Н \n3 \n3 \nL=214,0 \nОграждение \n \n4. Методика обследования \nОбследование выполнить в соответствии с н",
|
||||||
|
"ocr_text_preview": "38\nNo\nNno\nHaNMeHOBaHNe 3AaHN \nnO山aAb/μnNHa, M2\nn.n.\ncxeMe\ncoopyxeHN\n1\n1\nL=27,6\nOrpaKIeHHe\n2\n2\nS=3,8\nCoopyxeHue M1/H\n3\n3\nL=214,0\nOrpaKIeHNe\n4. MeTONKa o6cneOBaHN\nO6CneAOBaHNe BbInOnHNTb B COOTBeTCTBHN C HOpMaTUBHbIM AOKyMeHTOM 「OCT\n31937-2024 《3μaHN9 И COOpyKeHИ9. paBИna 06cnenOBaHN9 И MOHNTOpWHra\nTEXHNYECKOrOCOCTOAHNA》.\n5. CocTaB pa6oT\n5.1. AHanN3 WMeoWeicA\nnpOeKTHON\nAOKyMeHTaLNN\npe3ynbTaTOB\npaHe..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 39,
|
||||||
|
"image": "page_039.png",
|
||||||
|
"line_count": 39,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n36 \nИзм. Кол.у Лист №док. Подп. \nДата \n 39 \nобследования сооружений и наружных инженерных сетей, попадающих в зону \nвлияния объекта строительства” в которой должны быть указаны: \n- \nхарактеристики обследуемых инженерных коммуникаций, вентиляционных \nкамер и других сопутствую",
|
||||||
|
"ocr_text_preview": "39\no6cnenOBaHNA cOopy*eHN W HapyXHbIX WHXeHepHbIX ceTe, nonanaIo山NX B 3OHy\nBnNAHN9 O6beKTa CTpONTenbCTBa\"B KOTOpON OnXHbI 6bITbyKa3aHbl:\nOTBETCTBEHHOCTN W AP.);\nCBeneHNA06\nWMeIOWNXCA\nMaTepWanaxW3bICKaHNAn9CyWeCTByIo山Nx\nNHXeHepHbIX KOHCTpyKuИИ, CBeeHNA O TeXHNHeCKOM COCTOAHNИ KOHCTPyKLNM\nCyWeCTByIOWNX WH*eHepHbIX KOMMyHNKaLNИ, BeHTNnALNOHHbIX KaMep W APyrUX\n06cneOBaHNA.\n6.5. pИ BO3HNKHOBeHNN HeO6xO..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 40,
|
||||||
|
"image": "page_040.png",
|
||||||
|
"line_count": 44,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n37 \nИзм. Кол.у Лист №док. Подп. \nДата \n 40 \nПРОГРАММА РАБОТ \nПрограмма работ на выполнение обследования конструкций инженерных \nкоммуникаций, зданий и сооружений, попадающих в зону влияния от нового \nстроительства объекта «Подключение к централизованной системе водоотведения",
|
||||||
|
"ocr_text_preview": "40\nMPOrPAMMAPA6OT\nporpaMMa pa6oT Ha BbInOnHeHNe o6cneAOBaHUA KOHCTpyKuuN WHKeHepHbIX\nKOMMyHNKaLNИ, 3aHNИ И COOPyKeHNИ, OnaaIOWNX B 3OHy BnNAHNA OT HOBOrO\nCTpONTenbCTBa 06beKTa 《loμKJIO4eHNe K LeHTpanIM3OBaHHoN cHCTeMe BOLOOTBeneHUA\n 5 1 :\nMoCKBa, CAO, TonOBИHCKHN paNoH, KpOHWTaμTCKИ 6ynbB., (16-18)》.\n1. OCHOBaHWeM An9 pa3pa6oTKU Cny*UT AOrOBOp, 3aKJIO4eHHbIn Me*Ay O6山eCTBOM C\nOTBeTCTBeHHOCTb..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 41,
|
||||||
|
"image": "page_041.png",
|
||||||
|
"line_count": 80,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n38 \nИзм. Кол.у Лист №док. Подп. \nДата \n 41 \n• ГОСТ 18105-2018 «Бетоны. Правила контроля и оценки прочности»; \n• СП 11-105-97 «Инженерно-геологические изыскания для строительства»; \n• СП \n15.13330.2020 \n«СНиП \nII-22-81* \n\"Каменные \nи \nармокаменные \nконструкции»; \n• СП 16.1333",
|
||||||
|
"ocr_text_preview": "41\n「OCT 18105-2018 《BeTOHbl. paBWna KOHTpOnA И 0ueHKИ npo4H0CTH》;\nC 11-105-97 《VH*eHepHO-reOnorN4eCKMe W3bICKaHN9 An9 CTpoNTenbCTBa》;\n·\nCn\n15.13330.2020\n《CHu\nII-22-81*\n\"KaMeHHble\napMOKaMeHHble\nKOHCTpyKLNN》;\nC 16.13330.2017《CTanbHble KOHCTpyKμИN》;\nC 20.13330.2016《HarPy3KИ И B03neVCTBM9》;\nC 22.13330.2016 《OcHOBaHN9 3aHNN V C0OpyKeHNU》;\nC 24.13330.2021《CHn 2.02.03-85\"CBaVHble yHnaMeHTbl》;\nC 47.13330...."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 42,
|
||||||
|
"image": "page_042.png",
|
||||||
|
"line_count": 75,
|
||||||
|
"pdf_text_preview": "180-24/МСК-ОСК.ПЗ \nЛист \n39 \nИзм. Кол.у Лист №док. Подп. \nДата \n 42 \n \n№ \nп.п. \n№ по \nсхеме \nПлощадь/длина, м2 \nНаименование зданий и \nсооружений \n1 \n1 \nL=27,6 \nОграждение \n2 \n2 \nS=3,8 \nСооружение М1/Н \n3 \n3 \nL=214,0 \nОграждение \n \n6. Порядок работ Исполнителя по объекту, обеспечение доступа к конс",
|
||||||
|
"ocr_text_preview": "42\nNo\nOLN\nHaNMeHOBaHNe 3aHN W\nnOWaAb/μnNHa, M2\nn.n.\ncxeMe\ncoopyxeHN\n1\n1\nL=27,6\nOrpaxIeHNe\n2\n2\nS=3,8\nCoopykeHne M1/H\n3\n3\nL=214,0\nOrpaxIeHNe\n6. opAμOK pa6oT ИcnOnHNTen9 nO o6beKTy, o6ecneyeHNe AOcTyna K KOHCTpyKuNAM,\ncOrnaCOBaHNe\nBpeMeHNpa6oTBbInOnHAIOTC93aKa3yNKOM.\n7. CneLNanbHble MeponpuATNA:\na)\nB Cnyyae 06HapyXeHN9 aBapWMHbIX MeCT: He3aMeAnNTenbHO OnOBeCTUTb\n3aKa34NKa W BbInaTb peKOMeHnaLNN nO Bp..."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"entities": {
|
||||||
|
"floors": [],
|
||||||
|
"axes": [
|
||||||
|
"01",
|
||||||
|
"02",
|
||||||
|
"03",
|
||||||
|
"04",
|
||||||
|
"06",
|
||||||
|
"07",
|
||||||
|
"08",
|
||||||
|
"09",
|
||||||
|
"1",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
"13",
|
||||||
|
"14",
|
||||||
|
"15",
|
||||||
|
"16",
|
||||||
|
"17",
|
||||||
|
"18",
|
||||||
|
"19",
|
||||||
|
"2",
|
||||||
|
"20",
|
||||||
|
"21",
|
||||||
|
"22",
|
||||||
|
"23",
|
||||||
|
"24",
|
||||||
|
"25",
|
||||||
|
"26",
|
||||||
|
"27",
|
||||||
|
"28",
|
||||||
|
"29",
|
||||||
|
"3",
|
||||||
|
"30",
|
||||||
|
"31",
|
||||||
|
"32",
|
||||||
|
"33",
|
||||||
|
"34",
|
||||||
|
"35",
|
||||||
|
"36",
|
||||||
|
"37",
|
||||||
|
"38",
|
||||||
|
"39",
|
||||||
|
"4",
|
||||||
|
"40",
|
||||||
|
"41",
|
||||||
|
"42",
|
||||||
|
"44",
|
||||||
|
"47",
|
||||||
|
"48",
|
||||||
|
"5",
|
||||||
|
"50",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9",
|
||||||
|
"И",
|
||||||
|
"6"
|
||||||
|
],
|
||||||
|
"dimensions": [
|
||||||
|
"01000",
|
||||||
|
"02000",
|
||||||
|
"0472",
|
||||||
|
"0500",
|
||||||
|
"1000",
|
||||||
|
"101",
|
||||||
|
"103",
|
||||||
|
"105",
|
||||||
|
"110",
|
||||||
|
"111",
|
||||||
|
"1113",
|
||||||
|
"113",
|
||||||
|
"121",
|
||||||
|
"125",
|
||||||
|
"13330",
|
||||||
|
"150",
|
||||||
|
"155",
|
||||||
|
"156",
|
||||||
|
"157",
|
||||||
|
"158",
|
||||||
|
"159",
|
||||||
|
"160",
|
||||||
|
"166",
|
||||||
|
"180",
|
||||||
|
"18105",
|
||||||
|
"190",
|
||||||
|
"1985",
|
||||||
|
"1998",
|
||||||
|
"2003",
|
||||||
|
"2004",
|
||||||
|
"2011",
|
||||||
|
"2012",
|
||||||
|
"2014",
|
||||||
|
"2016",
|
||||||
|
"2017",
|
||||||
|
"2018",
|
||||||
|
"2020",
|
||||||
|
"2021",
|
||||||
|
"2024",
|
||||||
|
"2025",
|
||||||
|
"2026",
|
||||||
|
"214",
|
||||||
|
"249",
|
||||||
|
"2579",
|
||||||
|
"300",
|
||||||
|
"315",
|
||||||
|
"342",
|
||||||
|
"400",
|
||||||
|
"535",
|
||||||
|
"6600",
|
||||||
|
"7808",
|
||||||
|
"800",
|
||||||
|
"882"
|
||||||
|
],
|
||||||
|
"rooms": [],
|
||||||
|
"dates": [
|
||||||
|
"02.04.2026",
|
||||||
|
"02.07.2021",
|
||||||
|
"03.08.2018",
|
||||||
|
"06.08.2020",
|
||||||
|
"10.04.26",
|
||||||
|
"10.07.2025",
|
||||||
|
"10.10.2026",
|
||||||
|
"23.03.2026",
|
||||||
|
"29.12.2004",
|
||||||
|
"31.01.2018"
|
||||||
|
],
|
||||||
|
"document_refs": [
|
||||||
|
"180-24/MCK-OCK",
|
||||||
|
"180-24/MCK-OCK.113",
|
||||||
|
"180-24/MCK-OCK.1I3",
|
||||||
|
"180-24/MCK-OCK.C",
|
||||||
|
"180-24/MCK-OCK.I13",
|
||||||
|
"180-24/MCK-OCK.I3",
|
||||||
|
"180-24/MCK-OCK.II3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"ocr_json": "D:\\TEST docs\\output\\full_ocr_results.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
43965
output_123/full_ocr_results.json
Normal file
43965
output_123/full_ocr_results.json
Normal file
File diff suppressed because one or more lines are too long
380
output_123/project_index.json
Normal file
380
output_123/project_index.json
Normal file
@ -0,0 +1,380 @@
|
|||||||
|
{
|
||||||
|
"project": {
|
||||||
|
"document_number": null,
|
||||||
|
"customer": null,
|
||||||
|
"date": "31.01.2018",
|
||||||
|
"chief_engineer": null,
|
||||||
|
"total_pdf_pages": 9,
|
||||||
|
"ocr_processed_pages": 9
|
||||||
|
},
|
||||||
|
"table_of_contents": [],
|
||||||
|
"pages": [
|
||||||
|
{
|
||||||
|
"page_number": 1,
|
||||||
|
"image": "page_001.png",
|
||||||
|
"line_count": 0,
|
||||||
|
"pdf_text_preview": "",
|
||||||
|
"ocr_text_preview": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 2,
|
||||||
|
"image": "page_002.png",
|
||||||
|
"line_count": 18,
|
||||||
|
"pdf_text_preview": "Общест\nmerakom\nассоциа\nна осущес\n«Мно\nпо ад\nтво с ограничен\nm.ru. Разрешител\nация «СРО «Лига\nствление деятел\nЗака\nогофунк\nдресу: г\nвл.30\nной ответствен\nльные документы\nа изыскателей», р\nьности по сохран\nСисте\nазчик: Общ\nкциональ\nг. Москва\n0, вл. 30 \nРА\nОсн\n21-\nностью «Мерако\nы: ассоциация «Г\nрег. № ",
|
||||||
|
"ocr_text_preview": "MEPAKOM\nO\nAPXNTEKTYPHO-CTPONTENIbHOE\nNPOEKTNPOBAHNE\nmerakOm.ru.Pa3pewMTenbHble OKyMeHTbl: accouMauW9《WnbAW9 apxWTeKTopoB WWHxeHepoB》,per.Ne-003-007721752264-0323 oT 26.01.2018 r.:;\naccouMauM9《CPO 《ura W3bICKaTenev》, per. Ne W-013-007721752264-0472 oT 31.01.2018 r.: nWueH3u9 MuHWiCTepcTBa kynbTypbi PΦ Ne MKPΦ 23458\nHa OCyWeCTBneHNe HeATenbHOCTH no coxpaHeHNIo o6beKToB KynbTypHOro HaCnenWA(naMATHNKO..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 3,
|
||||||
|
"image": "page_003.png",
|
||||||
|
"line_count": 27,
|
||||||
|
"pdf_text_preview": "тво с ограничен\nm.ru. Разрешител\nация «СРО «Лига\nствление деятел\nЗаказ\nогофунк\nдресу: г\nвл.30\nеральны\nавный инж\n№ док. \nной ответствен\nльные документы\nа изыскателей», р\nьности по сохран\nСисте\nзчик: Обще\nкциональ\nг. Москва\n0, вл. 30 \nРА\nОсн\n21-\nый директ\nженер пр\nПодп. \nД\nностью «Мерако\nы: ассоциация",
|
||||||
|
"ocr_text_preview": "MEPAKOM\nAPXNTEKTYPHO-CTPONTENbHOE\nNPOEKTMPOBAHNE\nO6weCTB0 corpaHWyeHHo oTBeTCTBeHHocTbro《MepaKoM》.109316,r.MocKBa,BonrorpaACKWnp-T,A.47,+7(495)137-77-86,info@merakom ru,\naccounaLW9《CPO《Jura W3bICKaTenei》,per.No W-013-007721752264-0472oT 31.01.2018r.;nWueH3W9 MwHWCTepcTBa KynbTypbl PΦ No MKPΦ 23458\n3aKa34NK: O6山eCTBO C OrpaHN4eHHON OTBeTCTBeHHOCTbIO 《YKC ИHTEKO》\n《MHOrOOyHKLNOHanbHbIN KUnON KOMnneKC..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 4,
|
||||||
|
"image": "page_004.png",
|
||||||
|
"line_count": 307,
|
||||||
|
"pdf_text_preview": "Взам. инв. №\nИнв. № подл.\nПодп. и дата\nСогласовано\nЛистов\nСтадия\nЛист\n21-Р-Э02.00-КА.С99-КЖ.4.00\nФормат\nР\nМногофункциональный жилой комплекс с подземной автостоянкой по адресу:\nг. Москва, ЦАО, р-н Хамовники, Фрунзенская набережная, вл.30, вл. 30 стр.2,\nвл. 30 стр.19. 2 этап строительства\nРазраб.\nН. ",
|
||||||
|
"ocr_text_preview": "BedoMocmb ocHoBHblx KoMnneKmob padoyux yepmexei\nBnHDEDx anmqo\nCnoco5 yKAadKu donxHbl ucKANyamb BosMoxHOEmb 3OMepsCHUA 6emcHHou cHeCu e 3OHe <oHmCKmC c oCHobHuEM.\n\"P-0F.0-K4.$9-KX.0\n21-P-32.50<A C95KX2.02\n21-P-32.50<A C9K 2.03\n21-P-32-<Af9K24\n1ruxu2.050\n+ p- D01e 7\nKarcyrus peaas K<n,c a. Eepn.xn-u: pye,a.\nKs,tybs eru K<, . Eepxu-e ,pys,u\nn*shos qroxdea >ud:y na qouo\n3 arntn -n oTK +2,852\nKostykr..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 5,
|
||||||
|
"image": "page_005.png",
|
||||||
|
"line_count": 274,
|
||||||
|
"pdf_text_preview": "К/A1\n9/2\n7/2\n2\n2\n1\n1\n300\n12х280=3360\n430\n150\n200\n200\n200\n150\n1860\n4090\n900\n200\n7050\n150\n200\n200\n200\n150\n1250\n220\n1250\n250\n2720\nПм-3\nЛМ-5\nЛМ-6\n+18,210\n+14,530\n+10,850\n+16,410\n+12,730\n+9,050\n200\n200\n370\nСхема расположения ЛК-1 в осях К/А1 - 9/2\nна отм. +9.050... +18.210\nК/A1\n9/2\n7/2\n2\n2\n1\n1\n500\n8х280=",
|
||||||
|
"ocr_text_preview": "CxeMa pacnonoxeHu9 IK-1β ocax K/A1- 9/2\n/ecmHuua /IK-16 oc9x K/A1, 7/2 - 9/2\nHQ 0mM. +1.410... +3.130\nM-1\n0\n1:9)\n 200 1\n50\nTs.\nCneuuquxcuua K necmHuue /IK-1 6 ocax K/A1, 7/2 - 9/2\nHe aMsanfn e\nKna.\ned., <?\nNpHP-\n1\nlirn 3\nrecneuas mewcdec In-1\n中\nnH-?\nC-HU\nlucn 3\nlucn 3\nrecnruas mewcdec In2\nrecntu3s nrcwcdkc IIH3\nfecmiuc Hapau\n1\n+\ne03= 1%)\n91\n9\nvayMeus uKnyubHau sLDL-UM\nN en pn nrre\nM2\n 2\nM-1\nTM-3\nu..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 6,
|
||||||
|
"image": "page_006.png",
|
||||||
|
"line_count": 340,
|
||||||
|
"pdf_text_preview": "Выпуски\nподогнуть по месту\nр.ш.б.\nподрезать\nпо месту\n25\n195\n30\n250\n1\nL=1470\n50\nна концах\nзаанкеровать П-1\nсм. армирование\nплощадки типа Пм-\n25\n145\n30\n200\nВыпуски\nподогнуть по месту\n30\n125\n180\n25\nграница разделения \nконструкций\n20\n20\nГ-1\nшаг 200\nП-5\nшаг 200\nС-1 (11 шт)\nустановить в каждой ступени\nАрм",
|
||||||
|
"ocr_text_preview": "E-WU\n_2pmu._pssdene\nEx rtKu\nEerycK.J\npnuis,_pn>ea7sms\nSCH:ncykqu2\nApMupobaHue /IM-2\n220200200150\n∩M-1\n5\n900\nApMupobaHue /IM-1\nM\nX-→\nX↓\n(0crupoo-ue\nnncuciru nura x\n(H CCH.poc-ue\nI1-3\nU≥ \n?0\nBs ng\nygron?uns 2 sudo cn,ne\n[1 1(1 u)\n40e 20\nU0z 20\n10: 200\nycnoHouns osdo, CTyneru\nC-2 (§ unl\n? liun'.\n z 2on\n1-= :4anr.1\nrut; \nI: 00\n06 \neno-upstu, sesn-,u\n1u: 10. gurur?.b\n条\n司\n-3\n6 12x5am.\n∩-} (lun)\n10: 200..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 7,
|
||||||
|
"image": "page_007.png",
|
||||||
|
"line_count": 511,
|
||||||
|
"pdf_text_preview": "Спецификация элементов\nПоз.\nОбозначение\nНаименование\nКол.\nМасса\nед., кг\nПриме-\nчание\nЛестничный марш ЛМ-1\nДетали\n1\nГОСТ 34028-2016\n∅12 А500С L=1470\n2\n1.31\n2.62\nП-1\nГОСТ 34028-2016\n∅12 А500С L=1130\n2\n1.00\n2.00\nП-5\nГОСТ 34028-2016\n∅12 А500С L=1665\n36\n1.48\n53.28\nГ-1\nГОСТ 34028-2016\n∅12 А500С L=4180\n16\n",
|
||||||
|
"ocr_text_preview": "Bedomocme deraneu\nCneluuKauuA 3neMeHmo3\nlecnHus+uu *Cpu IM-?\nemayy\nn-5\n1470\nToi.\nmawcogo\nIn aanhn ae\nKaa.\nNccca\ned., x3\nNnu-\n9.0-820vE 100J\n12 A5c0C L=1030\n0.91\n10.92\nlecnHusui opu /M-1\nLen.u\nx-3\nx-3\nOCT 34020-20′6\nFOT 14020-506\n010 4240 =17901\n010 A240 -203c\n5\n1.25\n110\n555\n625\n265\nn5\n1270\n521\nror 3c0s06\n1 45001473\n1.31\n2.62\nn-2\nFOCT 34026-206\n012 A500C L-1100\n0.58\n266\nx-\nn-1r0C 302-2016\n12 A500C ..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 8,
|
||||||
|
"image": "page_008.png",
|
||||||
|
"line_count": 136,
|
||||||
|
"pdf_text_preview": "Л/A1\n5/A\n1000\nЛ/A1\n5/A\n+2,050\n+4,220\n+4,050\n+3,880\n210\n790\n1000\n190\n10х280=2800\n300\n200\n200\n200\n150\n970\n1\n1\n2\n2\n250\n1280\nСхема расположения ЛК-2 в осях Л/А1 - 5/А\nна отм. +2.050... +4.220\nСхема расположения ЛК-2 в осях Л/А1 - 5/А\nна отм. +5.240... +7.170\n2\n2\n3\n3\nЛМ-8\nЛМ-9\n1000\n1000\n2190\n+7,170\n+5,59",
|
||||||
|
"ocr_text_preview": "CxeMa pacnonoxeHu9 /K-2 B ocx A/A1- 5/A\nCxeMapacnonoxeHu9/IK-26 oc9x//A1-5/A\nCneuuΦukauu9 k necmHuue IK-2 6 ocgx A/A1 - 5/A\nHQ 0MM.+2.050...+4.220\nHQ 0MM.+5.240...+7.170\n1\nNo3.\n003HQeHUe\nHauMeHobcnue\nK0A.\ned., K2\nMacca\nHOHUe\n3.80\n250\n4.050\n1280\n4,220\n/IM-9\n/IM9\n+5.240\n970\n250\n/IM-8\n/lucm 6\n/ecmHUAHbIU Mapw /IM-8\n/lecmHU9Hble MCpwu\n1\n5,420\n/IM-9\n/ucm 6\n/ecmHU4HbIU Mopu IM9\n/IM-10\n/ucm 6\n/ecMHU4HbIU..."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"page_number": 9,
|
||||||
|
"image": "page_009.png",
|
||||||
|
"line_count": 382,
|
||||||
|
"pdf_text_preview": "Типовой узел установки\nхомутов\n50\n4х60=240\n30\n25\n145\nХ-4\nшаг 60\n200\nсм. армирование площадки\nП-4\n25\n∅16 А500С\nГ-8 (2x6шт.)\nшаг 200\nП-9\nшаг 200\nС-5 (11 шт)\nустановить в каждой ступени\n150\n200\n200\n200\n50\n100\n50\nХ-4\nшаг 60\nП-3 (7шт.)\nшаг 200\nХ-4\nшаг 60\n50\n100\n50\nП-3 (5шт.)\nшаг 200\n13 (2x5шт.)\nшаг 200\n9",
|
||||||
|
"ocr_text_preview": "ApMupobaHue AM-9\nCneuu中uKauuA sneMeHmob\nycTL-efure b kxeu sny'en.\n:5 16 ut?\nI-3 ban..\nApmupobaHue /M-8\nApmupobaHue IM-10\nna.\nHaTHE000\nHcuMeHobu.Hue\nKo.\nFnre\nef., <a\n-Hndu\n'5 12x5un.,\nuins 2C0\n45\n5\n10:200\nn-9\n[3 (2x6um)\nuoz 200\n1407\n3 (2x5ur)\n= 260\nuue 202\n25)\nuna 6\n12#\n1-1 un:\nu9z 25\n9)\nrOCT 3C23 2016\nTOCT 3C23 2016\n16 A500 =1430\n12 A500C L2425\nMesmuma Hu3u 7M-3\nanc.a\n10\n3\n2.3\n2'5\n2153\n[-3 5an]\n14..."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"entities": {
|
||||||
|
"floors": [],
|
||||||
|
"axes": [
|
||||||
|
"01",
|
||||||
|
"02",
|
||||||
|
"03",
|
||||||
|
"04",
|
||||||
|
"05",
|
||||||
|
"06",
|
||||||
|
"07",
|
||||||
|
"08",
|
||||||
|
"09",
|
||||||
|
"1",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
"13",
|
||||||
|
"14",
|
||||||
|
"15",
|
||||||
|
"16",
|
||||||
|
"17",
|
||||||
|
"18",
|
||||||
|
"19",
|
||||||
|
"2",
|
||||||
|
"20",
|
||||||
|
"21",
|
||||||
|
"22",
|
||||||
|
"23",
|
||||||
|
"24",
|
||||||
|
"25",
|
||||||
|
"26",
|
||||||
|
"27",
|
||||||
|
"28",
|
||||||
|
"29",
|
||||||
|
"3",
|
||||||
|
"30",
|
||||||
|
"31",
|
||||||
|
"32",
|
||||||
|
"33",
|
||||||
|
"35",
|
||||||
|
"36",
|
||||||
|
"37",
|
||||||
|
"38",
|
||||||
|
"39",
|
||||||
|
"4",
|
||||||
|
"40",
|
||||||
|
"41",
|
||||||
|
"42",
|
||||||
|
"43",
|
||||||
|
"44",
|
||||||
|
"45",
|
||||||
|
"47",
|
||||||
|
"48",
|
||||||
|
"49",
|
||||||
|
"5",
|
||||||
|
"50",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9"
|
||||||
|
],
|
||||||
|
"dimensions": [
|
||||||
|
"0323",
|
||||||
|
"0472",
|
||||||
|
"100",
|
||||||
|
"1000",
|
||||||
|
"101",
|
||||||
|
"1015",
|
||||||
|
"102",
|
||||||
|
"1021",
|
||||||
|
"1030",
|
||||||
|
"105",
|
||||||
|
"1050",
|
||||||
|
"1051",
|
||||||
|
"1070",
|
||||||
|
"1075",
|
||||||
|
"109",
|
||||||
|
"110",
|
||||||
|
"1100",
|
||||||
|
"111",
|
||||||
|
"112",
|
||||||
|
"113",
|
||||||
|
"114",
|
||||||
|
"1145",
|
||||||
|
"116",
|
||||||
|
"117",
|
||||||
|
"1170",
|
||||||
|
"118",
|
||||||
|
"119",
|
||||||
|
"120",
|
||||||
|
"1200",
|
||||||
|
"1220",
|
||||||
|
"12201",
|
||||||
|
"1225",
|
||||||
|
"12281",
|
||||||
|
"123",
|
||||||
|
"124",
|
||||||
|
"1245",
|
||||||
|
"125",
|
||||||
|
"1250",
|
||||||
|
"126",
|
||||||
|
"1270",
|
||||||
|
"1280",
|
||||||
|
"129",
|
||||||
|
"130",
|
||||||
|
"1320",
|
||||||
|
"1323",
|
||||||
|
"1330",
|
||||||
|
"13330",
|
||||||
|
"136",
|
||||||
|
"1360",
|
||||||
|
"1361",
|
||||||
|
"137",
|
||||||
|
"1395",
|
||||||
|
"140",
|
||||||
|
"1400",
|
||||||
|
"14020",
|
||||||
|
"14028",
|
||||||
|
"1407",
|
||||||
|
"143",
|
||||||
|
"1430",
|
||||||
|
"14565",
|
||||||
|
"146",
|
||||||
|
"1470",
|
||||||
|
"150",
|
||||||
|
"1500",
|
||||||
|
"1501",
|
||||||
|
"152",
|
||||||
|
"154",
|
||||||
|
"155",
|
||||||
|
"157",
|
||||||
|
"1585",
|
||||||
|
"159",
|
||||||
|
"1609",
|
||||||
|
"161",
|
||||||
|
"1660",
|
||||||
|
"1665",
|
||||||
|
"1670",
|
||||||
|
"1695",
|
||||||
|
"170",
|
||||||
|
"1700",
|
||||||
|
"175",
|
||||||
|
"1770",
|
||||||
|
"179",
|
||||||
|
"17901",
|
||||||
|
"182",
|
||||||
|
"187",
|
||||||
|
"1870",
|
||||||
|
"190",
|
||||||
|
"1920",
|
||||||
|
"195",
|
||||||
|
"1982",
|
||||||
|
"200",
|
||||||
|
"2000",
|
||||||
|
"2001",
|
||||||
|
"201",
|
||||||
|
"2012",
|
||||||
|
"2015",
|
||||||
|
"2016",
|
||||||
|
"2018",
|
||||||
|
"202",
|
||||||
|
"2025",
|
||||||
|
"205",
|
||||||
|
"206",
|
||||||
|
"2061",
|
||||||
|
"208",
|
||||||
|
"209",
|
||||||
|
"210",
|
||||||
|
"2132",
|
||||||
|
"214",
|
||||||
|
"2150",
|
||||||
|
"2153",
|
||||||
|
"216",
|
||||||
|
"218",
|
||||||
|
"220",
|
||||||
|
"221",
|
||||||
|
"224",
|
||||||
|
"229",
|
||||||
|
"230",
|
||||||
|
"231",
|
||||||
|
"2335",
|
||||||
|
"235",
|
||||||
|
"2373",
|
||||||
|
"240",
|
||||||
|
"2425",
|
||||||
|
"250",
|
||||||
|
"2500",
|
||||||
|
"252",
|
||||||
|
"2521",
|
||||||
|
"253",
|
||||||
|
"254",
|
||||||
|
"2555",
|
||||||
|
"2570",
|
||||||
|
"259",
|
||||||
|
"260",
|
||||||
|
"265",
|
||||||
|
"266",
|
||||||
|
"2665",
|
||||||
|
"268",
|
||||||
|
"270",
|
||||||
|
"2735",
|
||||||
|
"276",
|
||||||
|
"280",
|
||||||
|
"2800",
|
||||||
|
"281",
|
||||||
|
"294",
|
||||||
|
"300",
|
||||||
|
"3005",
|
||||||
|
"302",
|
||||||
|
"3023",
|
||||||
|
"3028",
|
||||||
|
"3061",
|
||||||
|
"307",
|
||||||
|
"3070",
|
||||||
|
"3095",
|
||||||
|
"310",
|
||||||
|
"3121",
|
||||||
|
"3145",
|
||||||
|
"316",
|
||||||
|
"320",
|
||||||
|
"3200",
|
||||||
|
"322",
|
||||||
|
"3250",
|
||||||
|
"330",
|
||||||
|
"3350",
|
||||||
|
"3361",
|
||||||
|
"340",
|
||||||
|
"354",
|
||||||
|
"3600",
|
||||||
|
"380",
|
||||||
|
"3810",
|
||||||
|
"400",
|
||||||
|
"4056",
|
||||||
|
"4075",
|
||||||
|
"410",
|
||||||
|
"4130",
|
||||||
|
"420",
|
||||||
|
"4230",
|
||||||
|
"4240",
|
||||||
|
"4249",
|
||||||
|
"4350",
|
||||||
|
"450",
|
||||||
|
"4500",
|
||||||
|
"455",
|
||||||
|
"470",
|
||||||
|
"4700",
|
||||||
|
"481",
|
||||||
|
"495",
|
||||||
|
"500",
|
||||||
|
"5000",
|
||||||
|
"506",
|
||||||
|
"515",
|
||||||
|
"520",
|
||||||
|
"521",
|
||||||
|
"523",
|
||||||
|
"530",
|
||||||
|
"532",
|
||||||
|
"540",
|
||||||
|
"550",
|
||||||
|
"551",
|
||||||
|
"555",
|
||||||
|
"570",
|
||||||
|
"590",
|
||||||
|
"600",
|
||||||
|
"610",
|
||||||
|
"6247",
|
||||||
|
"625",
|
||||||
|
"630",
|
||||||
|
"640",
|
||||||
|
"655",
|
||||||
|
"661",
|
||||||
|
"670",
|
||||||
|
"671",
|
||||||
|
"675",
|
||||||
|
"700",
|
||||||
|
"7120",
|
||||||
|
"750",
|
||||||
|
"7746",
|
||||||
|
"780",
|
||||||
|
"783",
|
||||||
|
"790",
|
||||||
|
"809",
|
||||||
|
"820",
|
||||||
|
"825",
|
||||||
|
"840",
|
||||||
|
"850",
|
||||||
|
"852",
|
||||||
|
"870",
|
||||||
|
"880",
|
||||||
|
"900",
|
||||||
|
"935",
|
||||||
|
"950",
|
||||||
|
"970"
|
||||||
|
],
|
||||||
|
"rooms": [],
|
||||||
|
"dates": [
|
||||||
|
"26.01.2018",
|
||||||
|
"31.01.2018"
|
||||||
|
],
|
||||||
|
"document_refs": []
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"ocr_json": "D:\\TEST docs\\output_123\\full_ocr_results.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
87
process_any_pdf.py
Normal file
87
process_any_pdf.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Универсальное распознавание PDF в указанную папку.
|
||||||
|
Использование:
|
||||||
|
python process_any_pdf.py <pdf_file> <output_folder_name>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import fitz
|
||||||
|
from pathlib import Path
|
||||||
|
from rapidocr import RapidOCR
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# Параметры
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
DPI = 300
|
||||||
|
BATCH_SIZE = 5
|
||||||
|
|
||||||
|
engine = RapidOCR()
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def process_pdf(pdf_path: Path, out_dir: Path):
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
doc = fitz.open(pdf_path)
|
||||||
|
total = len(doc)
|
||||||
|
print(f"=== PDF: {pdf_path.name} | Страниц: {total} -> {out_dir} ===\n")
|
||||||
|
|
||||||
|
all_pages = []
|
||||||
|
for i in range(total):
|
||||||
|
print(f"[{i+1}/{total}] Рендер + OCR ...", end=" ")
|
||||||
|
page = doc.load_page(i)
|
||||||
|
raw_text = page.get_text("text").strip()
|
||||||
|
|
||||||
|
mat = fitz.Matrix(DPI / 72, DPI / 72)
|
||||||
|
pix = page.get_pixmap(matrix=mat)
|
||||||
|
img_path = out_dir / f"page_{i+1:03d}.png"
|
||||||
|
pix.save(img_path)
|
||||||
|
|
||||||
|
res = engine(img_path)
|
||||||
|
ocr_lines = []
|
||||||
|
if res and res.txts is not None:
|
||||||
|
for txt, box, score in zip(res.txts, res.boxes, res.scores):
|
||||||
|
ocr_lines.append({
|
||||||
|
"text": txt,
|
||||||
|
"confidence": float(score),
|
||||||
|
"bbox": box.tolist() if hasattr(box, "tolist") else box
|
||||||
|
})
|
||||||
|
|
||||||
|
all_pages.append({
|
||||||
|
"page_number": i + 1,
|
||||||
|
"image": str(img_path.name),
|
||||||
|
"pdf_text_layer": raw_text,
|
||||||
|
"ocr_lines": ocr_lines,
|
||||||
|
"ocr_line_count": len(ocr_lines)
|
||||||
|
})
|
||||||
|
print(f"OCR строк: {len(ocr_lines)}")
|
||||||
|
|
||||||
|
if (i + 1) % BATCH_SIZE == 0 or i == total - 1:
|
||||||
|
with open(out_dir / "full_ocr_results.json", "w", encoding="utf-8") as f:
|
||||||
|
json.dump({"pages": all_pages}, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" -> промежуточное сохранение ({i+1} страниц)")
|
||||||
|
|
||||||
|
doc.close()
|
||||||
|
print(f"\n=== Готово. Результат в {out_dir} ===")
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
pdf_file = "123.pdf"
|
||||||
|
out_name = "output_123"
|
||||||
|
else:
|
||||||
|
pdf_file = sys.argv[1]
|
||||||
|
out_name = sys.argv[2] if len(sys.argv) > 2 else f"output_{Path(pdf_file).stem}"
|
||||||
|
|
||||||
|
pdf_path = Path(r"D:\TEST docs") / pdf_file
|
||||||
|
out_dir = Path(r"D:\TEST docs") / out_name
|
||||||
|
|
||||||
|
if not pdf_path.exists():
|
||||||
|
print(f"[ERR] Файл не найден: {pdf_path}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
process_pdf(pdf_path, out_dir)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
258
process_pdf.py
Normal file
258
process_pdf.py
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Тестовый скрипт распознавания PDF (чертежи / документы)
|
||||||
|
Стек: PyMuPDF (рендер) + RapidOCR (текст+координаты) + Docling (структура)
|
||||||
|
Работает на CPU.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import fitz # PyMuPDF
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 1. RapidOCR - лёгкий ONNX-OCR (входит в зависимости Docling)
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
try:
|
||||||
|
from rapidocr import RapidOCR
|
||||||
|
engine = RapidOCR()
|
||||||
|
print("[OK] RapidOCR загружен")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERR] RapidOCR: {e}")
|
||||||
|
engine = None
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 2. Docling - структурный анализ PDF
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
try:
|
||||||
|
from docling.document_converter import DocumentConverter
|
||||||
|
converter = DocumentConverter()
|
||||||
|
print("[OK] Docling загружен")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERR] Docling: {e}")
|
||||||
|
converter = None
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 3. Конфигурация
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
PDF_NAME = "Кронштадтский 16-18 НК1_ОСК (v3).pdf"
|
||||||
|
PDF_PATH = Path(r"D:\TEST docs") / PDF_NAME
|
||||||
|
OUT_DIR = Path(r"D:\TEST docs\output")
|
||||||
|
OUT_DIR.mkdir(exist_ok=True)
|
||||||
|
|
||||||
|
MAX_PAGES_OCR = 10 # test mode: first 10 pages
|
||||||
|
DPI = 300 # разрешение рендера страниц
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 4. Рендер страниц PDF -> PNG (PyMuPDF)
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def render_pages(pdf_path: Path, out_dir: Path, max_pages: int = None, dpi: int = 300):
|
||||||
|
doc = fitz.open(pdf_path)
|
||||||
|
images = []
|
||||||
|
total = min(max_pages, len(doc)) if max_pages else len(doc)
|
||||||
|
for i in range(total):
|
||||||
|
page = doc.load_page(i)
|
||||||
|
# матрица для заданного DPI (72 dpi по умолчанию в PDF)
|
||||||
|
mat = fitz.Matrix(dpi / 72, dpi / 72)
|
||||||
|
pix = page.get_pixmap(matrix=mat)
|
||||||
|
img_path = out_dir / f"page_{i+1:03d}.png"
|
||||||
|
pix.save(img_path)
|
||||||
|
images.append(img_path)
|
||||||
|
print(f" -> страница {i+1} отрендерена ({img_path.name})")
|
||||||
|
doc.close()
|
||||||
|
return images
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 5. OCR - извлечение текста с координатами (RapidOCR)
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def run_ocr(image_paths: list[Path]):
|
||||||
|
if engine is None:
|
||||||
|
print("[WARN] OCR-dvigok nedostupen, propuskaem")
|
||||||
|
return {}
|
||||||
|
results = {}
|
||||||
|
for img_path in image_paths:
|
||||||
|
print(f" OCR: {img_path.name} ...")
|
||||||
|
res = engine(img_path)
|
||||||
|
# res - RapidOCROutput s atributami txts, boxes, scores
|
||||||
|
entries = []
|
||||||
|
for txt, box, score in zip(res.txts, res.boxes, res.scores):
|
||||||
|
entries.append({
|
||||||
|
"text": txt,
|
||||||
|
"confidence": float(score),
|
||||||
|
"bbox": box.tolist() if hasattr(box, "tolist") else box
|
||||||
|
})
|
||||||
|
results[img_path.name] = entries
|
||||||
|
print(f" naydeno {len(entries)} strok")
|
||||||
|
return results
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 6. Docling - структурный анализ (текстовый слой PDF)
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def run_docling(pdf_path: Path, max_pages: int = 10):
|
||||||
|
if converter is None:
|
||||||
|
print("[WARN] Docling nedostupen, propuskaem")
|
||||||
|
return None
|
||||||
|
import shutil, tempfile, os
|
||||||
|
# Docling sometimes fails on cyrillic paths -> copy to temp latin path
|
||||||
|
# Also limit pages to avoid std::bad_alloc on CPU with large PDFs
|
||||||
|
tmp_dir = tempfile.mkdtemp(prefix="docling_")
|
||||||
|
tmp_path = Path(tmp_dir) / "input.pdf"
|
||||||
|
doc = fitz.open(pdf_path)
|
||||||
|
if len(doc) > max_pages:
|
||||||
|
new_doc = fitz.open()
|
||||||
|
for i in range(min(max_pages, len(doc))):
|
||||||
|
new_doc.insert_pdf(doc, from_page=i, to_page=i)
|
||||||
|
new_doc.save(tmp_path)
|
||||||
|
new_doc.close()
|
||||||
|
else:
|
||||||
|
shutil.copy2(pdf_path, tmp_path)
|
||||||
|
doc.close()
|
||||||
|
print(f" Docling: obrabotka (temp copy, first {max_pages} pages) ...")
|
||||||
|
try:
|
||||||
|
result = converter.convert(tmp_path)
|
||||||
|
doc_out = result.document
|
||||||
|
md = doc_out.export_to_markdown()
|
||||||
|
return md
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERR] Docling: {e}")
|
||||||
|
return None
|
||||||
|
finally:
|
||||||
|
try:
|
||||||
|
os.remove(tmp_path)
|
||||||
|
os.rmdir(tmp_dir)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
print(f" Docling: обработка {pdf_path.name} ...")
|
||||||
|
try:
|
||||||
|
result = converter.convert(pdf_path)
|
||||||
|
doc = result.document
|
||||||
|
md = doc.export_to_markdown()
|
||||||
|
return md
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[ERR] Docling: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 7. Кастомный парсер - простая эвристика для чертежей
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def parse_drawing_text(ocr_data: dict):
|
||||||
|
"""
|
||||||
|
Ищет в OCR-результатах признаки этажей, осей, размеров.
|
||||||
|
Возвращает словарь с найденными сущностями.
|
||||||
|
"""
|
||||||
|
import re
|
||||||
|
found = {
|
||||||
|
"floors": set(),
|
||||||
|
"axes": set(),
|
||||||
|
"dimensions": set(),
|
||||||
|
"rooms": set(),
|
||||||
|
}
|
||||||
|
|
||||||
|
floor_patterns = [
|
||||||
|
re.compile(r"(\d+)[-\s]?й\s*этаж", re.I),
|
||||||
|
re.compile(r"этаж\s*(\d+)", re.I),
|
||||||
|
re.compile(r"этаж\s*([А-Я]\d?)", re.I),
|
||||||
|
re.compile(r"НК\d", re.I),
|
||||||
|
]
|
||||||
|
|
||||||
|
axis_patterns = [
|
||||||
|
re.compile(r"\b([А-Я])\b"), # одиночная буква
|
||||||
|
re.compile(r"\b(\d{1,2})\b"), # одиночная цифра/двузначное
|
||||||
|
re.compile(r"([А-Я])\s*[-–]\s*([А-Я])"), # А-Б
|
||||||
|
]
|
||||||
|
|
||||||
|
dim_patterns = [
|
||||||
|
re.compile(r"\b(\d{3,5})\s*м?[мм]?\b"), # 3600, 5400 и т.д.
|
||||||
|
]
|
||||||
|
|
||||||
|
room_patterns = [
|
||||||
|
re.compile(r"([Кк]вартира|[Кк]в\.?\s*\d+)", re.I),
|
||||||
|
re.compile(r"([Пп]омещение)\s*(\d+)", re.I),
|
||||||
|
]
|
||||||
|
|
||||||
|
for img_name, lines in ocr_data.items():
|
||||||
|
for entry in lines:
|
||||||
|
text = entry["text"].strip()
|
||||||
|
# этажи
|
||||||
|
for pat in floor_patterns:
|
||||||
|
m = pat.search(text)
|
||||||
|
if m:
|
||||||
|
found["floors"].add(m.group(0))
|
||||||
|
# оси
|
||||||
|
for pat in axis_patterns:
|
||||||
|
for m in pat.finditer(text):
|
||||||
|
g = m.group(0).replace(" ","").replace("-","").replace("–","")
|
||||||
|
if g and len(g) <= 3:
|
||||||
|
found["axes"].add(g)
|
||||||
|
# размеры
|
||||||
|
for pat in dim_patterns:
|
||||||
|
for m in pat.finditer(text):
|
||||||
|
val = m.group(1)
|
||||||
|
if 100 <= int(val) <= 50000:
|
||||||
|
found["dimensions"].add(val)
|
||||||
|
# помещения
|
||||||
|
for pat in room_patterns:
|
||||||
|
m = pat.search(text)
|
||||||
|
if m:
|
||||||
|
found["rooms"].add(m.group(0))
|
||||||
|
|
||||||
|
# очистка ложных осей (слишком общие цифры)
|
||||||
|
axes_clean = {a for a in found["axes"] if a.isalpha() or (a.isdigit() and 1 <= int(a) <= 50)}
|
||||||
|
found["axes"] = axes_clean
|
||||||
|
|
||||||
|
return {k: sorted(v) for k, v in found.items()}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 8. main
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def main():
|
||||||
|
if not PDF_PATH.exists():
|
||||||
|
print(f"[ERR] Файл не найден: {PDF_PATH}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
doc_tmp = fitz.open(PDF_PATH)
|
||||||
|
page_count = doc_tmp.page_count
|
||||||
|
doc_tmp.close()
|
||||||
|
print(f"\n=== PDF: {PDF_PATH.name} ===")
|
||||||
|
print(f"Vsego stranits: {page_count}")
|
||||||
|
|
||||||
|
# --- 8.1 Render stranits ---
|
||||||
|
print("\n[1/4] Render stranits v izobrazheniya...")
|
||||||
|
images = render_pages(PDF_PATH, OUT_DIR, MAX_PAGES_OCR, DPI)
|
||||||
|
|
||||||
|
# --- 8.2 OCR ---
|
||||||
|
print("\n[2/4] OCR (RapidOCR)...")
|
||||||
|
ocr_results = run_ocr(images)
|
||||||
|
ocr_json = OUT_DIR / "ocr_results.json"
|
||||||
|
with open(ocr_json, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(ocr_results, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" -> sohraneno {ocr_json}")
|
||||||
|
|
||||||
|
# --- 8.3 Docling ---
|
||||||
|
print("\n[3/4] Strukturnyy analiz (Docling)...")
|
||||||
|
md_text = run_docling(PDF_PATH, max_pages=MAX_PAGES_OCR)
|
||||||
|
if md_text:
|
||||||
|
md_path = OUT_DIR / "docling_output.md"
|
||||||
|
with open(md_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(md_text)
|
||||||
|
print(f" -> sohraneno {md_path}")
|
||||||
|
else:
|
||||||
|
print(" Docling ne dal rezultata")
|
||||||
|
|
||||||
|
# --- 8.4 Custom parser ---
|
||||||
|
print("\n[4/4] Custom parser chertezha...")
|
||||||
|
parsed = parse_drawing_text(ocr_results)
|
||||||
|
parsed_json = OUT_DIR / "parsed_entities.json"
|
||||||
|
with open(parsed_json, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(parsed, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" -> sohraneno {parsed_json}")
|
||||||
|
print("\n--- Naydennye sushchnosti ---")
|
||||||
|
for k, v in parsed.items():
|
||||||
|
print(f" {k}: {v}")
|
||||||
|
|
||||||
|
print(f"\n=== Gotovo. Rezultaty v {OUT_DIR} ===")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
99
process_pdf_full.py
Normal file
99
process_pdf_full.py
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Полное распознавание PDF без Docling (из-за нехватки RAM на CPU).
|
||||||
|
Стек: PyMuPDF (рендер + текстовый слой) + RapidOCR (текст+координаты).
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
import fitz
|
||||||
|
from pathlib import Path
|
||||||
|
from rapidocr import RapidOCR
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 1. Конфигурация
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
PDF_NAME = "Кронштадтский 16-18 НК1_ОСК (v3).pdf"
|
||||||
|
PDF_PATH = Path(r"D:\TEST docs") / PDF_NAME
|
||||||
|
OUT_DIR = Path(r"D:\TEST docs\output")
|
||||||
|
OUT_DIR.mkdir(exist_ok=True)
|
||||||
|
|
||||||
|
DPI = 300 # разрешение рендера
|
||||||
|
BATCH_SIZE = 5 # сохраняем прогресс каждые N страниц
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 2. Рендер + OCR одной страницы
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
engine = RapidOCR()
|
||||||
|
|
||||||
|
def process_page(doc: fitz.Document, page_num: int, dpi: int = 300):
|
||||||
|
"""Обработка одной страницы: рендер, OCR, текстовый слой."""
|
||||||
|
page = doc.load_page(page_num)
|
||||||
|
|
||||||
|
# --- 2.1 Текстовый слой PDF (если есть) ---
|
||||||
|
raw_text = page.get_text("text").strip()
|
||||||
|
|
||||||
|
# --- 2.2 Рендер в PNG ---
|
||||||
|
mat = fitz.Matrix(dpi / 72, dpi / 72)
|
||||||
|
pix = page.get_pixmap(matrix=mat)
|
||||||
|
img_path = OUT_DIR / f"page_{page_num+1:03d}.png"
|
||||||
|
pix.save(img_path)
|
||||||
|
|
||||||
|
# --- 2.3 OCR ---
|
||||||
|
res = engine(img_path)
|
||||||
|
ocr_lines = []
|
||||||
|
for txt, box, score in zip(res.txts, res.boxes, res.scores):
|
||||||
|
ocr_lines.append({
|
||||||
|
"text": txt,
|
||||||
|
"confidence": float(score),
|
||||||
|
"bbox": box.tolist() if hasattr(box, "tolist") else box
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
"page_number": page_num + 1,
|
||||||
|
"image": str(img_path.name),
|
||||||
|
"pdf_text_layer": raw_text,
|
||||||
|
"ocr_lines": ocr_lines,
|
||||||
|
"ocr_line_count": len(ocr_lines)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
# 3. main
|
||||||
|
# ------------------------------------------------------------------
|
||||||
|
def main():
|
||||||
|
if not PDF_PATH.exists():
|
||||||
|
print(f"[ERR] Файл не найден: {PDF_PATH}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
doc = fitz.open(PDF_PATH)
|
||||||
|
total = len(doc)
|
||||||
|
print(f"=== PDF: {PDF_PATH.name} | Страниц: {total} ===\n")
|
||||||
|
|
||||||
|
all_pages = []
|
||||||
|
for i in range(total):
|
||||||
|
print(f"[{i+1}/{total}] Рендер + OCR ...", end=" ")
|
||||||
|
page_data = process_page(doc, i, DPI)
|
||||||
|
all_pages.append(page_data)
|
||||||
|
print(f"OCR строк: {page_data['ocr_line_count']}")
|
||||||
|
|
||||||
|
# Промежуточное сохранение
|
||||||
|
if (i + 1) % BATCH_SIZE == 0 or i == total - 1:
|
||||||
|
part_path = OUT_DIR / "full_ocr_results.json"
|
||||||
|
with open(part_path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump({"pages": all_pages}, f, ensure_ascii=False, indent=2)
|
||||||
|
print(f" -> промежуточное сохранение ({i+1} страниц)")
|
||||||
|
|
||||||
|
doc.close()
|
||||||
|
|
||||||
|
# Итоговый файл
|
||||||
|
final_path = OUT_DIR / "full_ocr_results.json"
|
||||||
|
with open(final_path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump({"pages": all_pages}, f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
print(f"\n=== Готово. Обработано {len(all_pages)} страниц ===")
|
||||||
|
print(f"Результат: {final_path}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue
Block a user