First of all:
If two numbers are adjacent, and one of them is n bigger than the other, then the bigger number must extend at least n in the perpendicular direction. (For example, take the 12 and 7 in the top middle: there can only be up to 7 cells in that horizontal group, so there must be at least 5 more extending vertically from the 12.) Applying this logic in a few places gets us this far:
This deduction can be extended:
If any method of extending n cells in the given direction would overlap something less than n, then you can't extend that many cells. For example, the horizontal group of white cells including the 8 and 10 at the bottom cannot be at least 7 cells: it would run into either the 4 or the 6. So it is at most 6 cells wide, and the 8 extends 2 cells upwards.
The same logic can be applied in a few other places.
Now we can start shading cells:
The 10 and the 6 on the left are finished, so they can be blocked off. The remaining cell in the fifth column can also be shaded.
The 12 in the upper left then has only one way to extend, and that finishes the 7s along the top, and then that finishes the 4 in the upper right.
Now, some more cells have to extend some amount in given directions:
The 6s on the right wall must go up at least four cells: that finishes it, as well as the 7 in the same column. Since the bottom right is shaded, the other 6 must go all the way left.
The 13 in the upper left needs to go down some amount, and that finishes it.
And now the rest of the puzzle can be easily resolved.
The entire fourth row can be resolved from the 9 in it; the bottom left can be resolved with the two 4s; and the remaining cells are determined from the 9 in the eighth row.