Nhiều lúc muốn sử dụng một cái hình nào đó, mà bị người ta đóng dấu abc.com lên trên thấy cũng phiền. Nay giới thiệu các bạn đoạn code đơn giản trên python để remove nó cách nhanh nhẹn, tự động. Trước khi đi chi tiết, các bạn có thể tham khảo hiệu năng chương trình tại đây:
Các bước thực hiện như sau: https://app.itcctv.vn/removetext
- cài đặt
pip install paddleocr paddlepaddle
2. đoạn chương trình remove chữ mà mình chọn, nếu là chữ tiếng việt, nhớ viết không dấu nhé.
def remove_specific_text_paddleocr(image_path, output_path, target_texts, lang='en'):
# Khởi tạo OCR với ngôn ngữ
ocr = PaddleOCR(use_angle_cls=True, lang=lang)
# Đọc hình ảnh
image = cv2.imread(image_path)
if image is None:
print("Không thể đọc hình ảnh.")
return
# Phát hiện văn bản trên hình ảnh
results = ocr.ocr(image_path)
# Tạo mask để che chữ cần xóa
mask = np.zeros(image.shape[:2], dtype=np.uint8)
for result in results[0]: # Duyệt qua từng đoạn văn bản được nhận diện
print ('ket qua')
box = result[0] # Tọa độ vùng chữ
text, prob = result[1] # Nội dung và độ tin cậy
print(text)
if text.strip().lower() in [t.lower() for t in target_texts]: # So khớp với danh sách chữ cần xóa
print(f"Xóa chữ: {text} (Độ tin cậy: {prob:.2f})")
points = np.array(box, dtype=np.int32) # Chuyển tọa độ vùng chữ thành numpy array
cv2.fillPoly(mask, [points], 255) # Vẽ vùng chữ vào mask
# Áp dụng kỹ thuật inpainting để xóa chữ
inpainted_image = cv2.inpaint(image, mask, inpaintRadius=3, flags=cv2.INPAINT_TELEA)
# Lưu ảnh kết quả
cv2.imwrite(output_path, inpainted_image)
print(f"Ảnh sau khi xóa chữ đã lưu tại: {output_path}")