示例#1
0
    def copy_to(self, database_book: DatabaseBook) -> 'DatabasePage':
        if not database_book.exists():
            raise FileNotFoundError("Database {} not existing".format(database_book.local_path()))

        copy_page = DatabasePage(database_book, self.page)

        if copy_page.exists():
            shutil.rmtree(copy_page.local_path())

        shutil.copytree(self.local_path(), copy_page.local_path())
        return copy_page
    def load(book: DatabaseBook):
        path = book.local_path('book_documents.json')
        try:
            with open(path) as f:
                d = DatabaseBookDocuments.from_book_json(book, json.load(f))
        except FileNotFoundError:
            d = DatabaseBookDocuments(b_id=book.book)

        return d
示例#3
0
    def load(book: DatabaseBook):
        path = book.local_path('book_meta.json')
        try:
            with open(path) as f:
                d = DatabaseBookMeta.from_book_json(book, f.read())
        except FileNotFoundError:
            d = DatabaseBookMeta(id=book.book, name=book.book)

        return d
示例#4
0
from database.database_book import DatabaseBook

if __name__ == "__main__":
    book = DatabaseBook('Graduel_Fully_Annotated')
    page = book.page('Graduel_de_leglise_de_Nevers_035')
    pcgts = page.pcgts()
    pcgts.page.rotate(-0.125)
    pcgts.to_file(page.file('pcgts').local_path())
    def update_book_documents(book: DatabaseBook):
        d: DatabaseBookDocuments = DatabaseBookDocuments.load(book)
        db_pages: List[DatabasePage] = book.pages()
        document_page_ids = []
        document_page_names = []
        textinitium = ''
        documents: List[Document] = []
        start = None
        for page_ind, db_page in enumerate(db_pages):
            page = db_page.pcgts().page
            if start is not None:
                document_page_ids.append(page.p_id)
                document_page_names.append(page.location.page)

            for ind, t_line in enumerate(page.all_text_lines(), start=1):

                if t_line.sentence.document_start:
                    if start is None:
                        start = DocumentConnection(
                            line_id=t_line.id,
                            page_id=page.p_id,
                            row=ind,
                            page_name=page.location.page)
                        textinitium = t_line.sentence.text(True)
                        document_page_ids.append(page.p_id)
                        document_page_names.append(page.location.page)
                    else:
                        end_row = ind - 1 if ind - 1 != 0 else len(
                            db_pages[page_ind -
                                     1].pcgts().page.all_text_lines())
                        end_page = page.location.page if ind - 1 != 0 else db_pages[
                            page_ind - 1].pcgts().page.location.page
                        documents.append(
                            Document(document_page_ids,
                                     document_page_names,
                                     start=start,
                                     end=DocumentConnection(
                                         line_id=t_line.id,
                                         page_id=page.p_id,
                                         row=end_row,
                                         page_name=end_page),
                                     textinitium=textinitium))
                        document_page_ids = [page.p_id]
                        document_page_names = [page.location.page]

                        start = DocumentConnection(
                            line_id=t_line.id,
                            page_id=page.p_id,
                            row=ind,
                            page_name=page.location.page)
                        textinitium = t_line.sentence.text(True)

        if start is not None:
            db_page = db_pages[-1]
            page = db_page.pcgts().page
            lines = page.all_text_lines()

            documents.append(
                Document(document_page_ids,
                         document_page_names,
                         start=start,
                         end=DocumentConnection(
                             line_id=lines[-1].id if len(lines) > 0 else None,
                             page_id=page.p_id,
                             row=len(lines),
                             page_name=page.location.page),
                         textinitium=textinitium))

        updated_documents: List[Document] = []
        for doc in documents:
            for orig_doc in d.database_documents.documents:
                if doc.start == orig_doc.start:
                    updated_doc = orig_doc
                    updated_doc.pages_names = doc.pages_names
                    updated_doc.pages_ids = doc.pages_ids
                    updated_doc.end = doc.end
                    updated_doc.textinitium = doc.textinitium
                    updated_documents.append(updated_doc)
                    break
            else:
                updated_documents.append(doc)

        d.database_documents = Documents(documents=updated_documents)
        return d
 def to_file(self, book: DatabaseBook):
     self.b_id = book.book
     s = self.to_json()
     with open(book.local_path('book_documents.json'), 'w') as f:
         js = json.dumps(s, indent=2)
         f.write(js)
                         end=DocumentConnection(
                             line_id=lines[-1].id if len(lines) > 0 else None,
                             page_id=page.p_id,
                             row=len(lines),
                             page_name=page.location.page),
                         textinitium=textinitium))

        updated_documents: List[Document] = []
        for doc in documents:
            for orig_doc in d.database_documents.documents:
                if doc.start == orig_doc.start:
                    updated_doc = orig_doc
                    updated_doc.pages_names = doc.pages_names
                    updated_doc.pages_ids = doc.pages_ids
                    updated_doc.end = doc.end
                    updated_doc.textinitium = doc.textinitium
                    updated_documents.append(updated_doc)
                    break
            else:
                updated_documents.append(doc)

        d.database_documents = Documents(documents=updated_documents)
        return d


if __name__ == '__main__':
    b = DatabaseBookDocuments.update_book_documents(DatabaseBook('demo2'))

    b.to_file(DatabaseBook("demo2"))
    print(b.to_json())
示例#8
0
 def to_file(self, book: DatabaseBook):
     self.id = book.book
     s = self.to_json(indent=2)
     with open(book.local_path('book_meta.json'), 'w') as f:
         f.write(s)
示例#9
0
        except FileNotFoundError:
            d = DatabaseBookMeta(id=book.book, name=book.book)

        return d

    @staticmethod
    def from_book_json(book: DatabaseBook, json: str):
        from database.models.bookstyles import BookStyle, DEFAULT_BOOK_STYLE
        meta = DatabaseBookMeta.from_json(json)
        meta.id = book.book
        if len(meta.name) == 0:
            meta.name = book.book

        try:
            BookStyle.objects.get(id=meta.notationStyle)
        except BookStyle.DoesNotExist:
            meta.notationStyle = DEFAULT_BOOK_STYLE

        return meta

    def to_file(self, book: DatabaseBook):
        self.id = book.book
        s = self.to_json(indent=2)
        with open(book.local_path('book_meta.json'), 'w') as f:
            f.write(s)


if __name__ == '__main__':
    b = DatabaseBookMeta.load(DatabaseBook('Graduel'))
    print(b.to_json())
示例#10
0
        return ImageOperationList(operations)

    def __init__(self, pcgts: List[PcGts], params: DatasetParams):
        params.pad = (0, 10, 0, 20)
        params.dewarp = False
        params.staff_lines_only = True
        params.cut_region = True
        super().__init__(pcgts, params)


if __name__ == '__main__':
    import matplotlib.pyplot as plt
    from database.database_book import DatabaseBook
    from omr.dataset.dataset import LyricsNormalizationParams

    pages = [p for p in DatabaseBook('Gothic_Test').pages()]
    params = DatasetParams(
        height=60,
        gt_required=True,
        cut_region=True,
        pad=[0, 10, 0, 20],
        page_scale_reference=PageScaleReference.HIGHRES,
        lyrics_normalization=LyricsNormalizationParams(
            LyricsNormalization.ONE_STRING),
    )

    if True:
        page = pages[0]
        pcgts = PcGts.from_file(page.file('pcgts'))
        dataset = TextDataset([pcgts], params)
        calamari_dataset = dataset.to_text_line_calamari_dataset()