def _process_row_cells(
    rows: List[_TableCellModelOutput],
    cols: List[_TableCellModelOutput],
    headers: List[_TableHeader],
    image_size: Size,
    page_size: Size,
) -> List[_TableRow]:
    """
    Process row cells by checking against header cells for overlaps and converting coordinates.
    """
    data_cells = []
    for row in rows:
        row_cells = []
        for col in cols:
            cell_bbox = calc_bbox_intersection(row.bbox, col.bbox, safety_margin=5)

            if cell_bbox:
                cell_bbox_pdf = convert_img_cords_to_pdf_cords(
                    cell_bbox, page_size, image_size
                )

                if not _is_overlapping_with_headers(cell_bbox_pdf, headers):
                    row_cells.append(
                        _TableDataCell(
                            bbox=cell_bbox_pdf,
                        )
                    )
        if row_cells:
            data_cells.append(_TableRow(cells=row_cells))
    return data_cells

    Process row cells by checking against header cells for overlaps and converting coordinates.
    
src/openparse/tables/table_transformers/ml.py