Skip to content
Snippets Groups Projects
Commit 0df98ebd authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'page-text' into 'master'

Compute page text from lines

See merge request !155
parents f5f76ea9 6f2c9dcf
No related branches found
No related tags found
1 merge request!155Compute page text from lines
......@@ -214,10 +214,6 @@ def save_ml_results(self, results, **kwargs):
if result is None:
continue
page.classification = result['classification']
page.save()
self.report_message("Updated ML results for {}".format(page))
tr_items = result['zones']
# Parse transcription types
for item in tr_items:
......@@ -235,6 +231,11 @@ def save_ml_results(self, results, **kwargs):
index_transcriptions(transcriptions)
self.report_message('Indexed transcriptions for {}'.format(page))
page.build_text()
page.classification = result['classification']
page.save()
self.report_message("Updated ML results for {}".format(page))
return list(map(str, results.keys()))
......
......@@ -72,6 +72,7 @@ class TestTasks(FixtureMixin, RedisMockAPITestCase):
'label': 'dog',
'probability': 0.9,
}])
self.assertEqual(dog.text, '')
dog_ts = dog.transcriptions.get()
self.assertEqual(dog_ts.type, TranscriptionType.Word)
self.assertEqual(dog_ts.text, 'woof')
......@@ -83,6 +84,7 @@ class TestTasks(FixtureMixin, RedisMockAPITestCase):
'label': 'cat',
'probability': 0.8,
}])
self.assertEqual(cat.text, 'meow')
cat_ts = cat.transcriptions.get()
self.assertEqual(cat_ts.type, TranscriptionType.Line)
self.assertEqual(cat_ts.text, 'meow')
......
......@@ -437,6 +437,15 @@ class Page(Element):
# Wait for result
self.text = task.get()
def build_text(self):
self.text = '\n'.join(
t.text
for t in sorted(
self.transcriptions.filter(type=TranscriptionType.Line).prefetch_related('zone'),
key=lambda t: (t.zone.polygon.center.y, t.zone.polygon.center.x),
)
)
class Act(Element):
"""
......
from arkindex.project.tests import FixtureTestCase
from arkindex.project.polygon import Polygon
from arkindex.documents.models import Page, TranscriptionType
class TestPage(FixtureTestCase):
def test_build_text(self):
img = self.imgsrv.images.create(path='build_text_test')
page = Page.objects.create(
corpus=self.corpus,
name='Page text test',
zone=img.zones.create(
polygon=Polygon.from_coords(0, 0, 1000, 1000),
),
)
# Two lines next to each other
page.transcriptions.create(
type=TranscriptionType.Line,
zone=img.zones.create(polygon=Polygon.from_coords(0, 0, 500, 100)),
text='Ligne 1',
)
page.transcriptions.create(
type=TranscriptionType.Line,
zone=img.zones.create(polygon=Polygon.from_coords(600, 0, 100, 100)),
text='Ligne 2',
)
# One line under them
page.transcriptions.create(
type=TranscriptionType.Line,
zone=img.zones.create(polygon=Polygon.from_coords(0, 200, 42, 42)),
text='Ligne 3',
)
# A word that should not appear
page.transcriptions.create(
type=TranscriptionType.Word,
zone=img.zones.create(polygon=Polygon.from_coords(0, 0, 42, 42)),
text='Mot',
)
page.build_text()
self.assertEqual(page.text, "Ligne 1\nLigne 2\nLigne 3")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment