Współrzędne tekstu w ramce na obrazie
Chciałbym uzyskać współrzędne tekstu w ramce na obrazie. Akapity mają cienkie czarne obramowanie. Reszta obrazu zawiera zwykłe akapity i szkice.
Oto przykład:

Czy masz pojęcie, jakiego rodzaju algorytmów powinienem użyć w Pythonie z biblioteką obrazów, aby to osiągnąć? Dzięki.
Odpowiedzi
Kilka pomysłów na wykrycie tekstu w ramce, który w dużej mierze sprowadza się do wyszukiwania ramek / prostokątów o znacznej wielkości:
znajduj kontury za pomocą OpenCV, analizuj kształty za pomocą algorytmu aproksymacji wielokątów (znanego również jako algorytm Ramera – Douglasa – Peuckera ). Możesz dodatkowo sprawdzić proporcje ramki ograniczającej, aby upewnić się, że kształt jest prostokątem, a także sprawdzić szerokość strony, ponieważ wydaje się, że jest to znana miara w Twoim przypadku. PyImageSearch napisał ten niesamowity artykuł:cv2.approxPolyDP()
- Wykrywanie kształtu OpenCV
w powiązanym pytaniu pojawia się również sugestia, aby zajrzeć do Hough Lines w celu wykrycia linii poziomej, wykonując w ten sam sposób wykrywanie linii pionowych. Nie jestem w 100% pewien, jak niezawodne byłoby to podejście.
Po znalezieniu ramek następnym krokiem byłoby sprawdzenie, czy nie ma w nich tekstu. Wykrywanie tekstu to ogólnie szerszy problem i można to zrobić na wiele sposobów. Oto kilka przykładów:
zastosuj detektor tekstu EAST
PixelLink
tesseract (np. via
pytesseract
), ale nie jestem pewien, czy nie spowodowałoby to zbyt wielu fałszywych alarmówjeśli jest to prostszy przypadek, gdy pola są puste lub nie, możesz sprawdzić średnie wartości pikseli w środku - np cv2.countNonZero(). za pomocą . Przykłady:
- Jak zidentyfikować pusty prostokąt za pomocą OpenCV
- Policz czarne piksele za pomocą OpenCV
Dodatkowe odniesienia:
- pomysły dotyczące wykrywania czworokątów / prostokątów przy użyciu konwolucyjnych sieci neuronowych